2011-10-05 58 views
0

我不需要显示一个div,当在一个PHP结构。 我做:为什么jQuery的css()调用不起作用?

<?php 
$a = $_POST['somefiledcomingFromform'] ; //equals 1 
if (isset($_POST['submit'])) { 

    if($a==1){ 


     // echo"<script>$(document).ready(function() { $('.delete').css(\"display\", \"none\")});</script>"; 
     echo"<script>$('.delete').css(\"display\", \"none\");</script>"; 

    } 
} 

    echo"<div class='delete'>Delete me</div>"; 
    ?> 

但它不工作,在div显示,如果.. 我究竟做错了不要紧什么线我里面去使用?

万分感谢

回答

2

而不是把在JavaScript的,你为什么不这样做:

<?php 

$a = 1; 
if ($a == 1) { 
    echo '<div class="delete" style="display:none;">Delete me</div>'; 

} else { 
    echo '<div class="delete">Delete me</div>'; 
} 
+0

非常抱歉,我发布了错误的代码。我编辑了这篇文章,并且有很好的一篇。正如你所看到的,php正在处理一个表单。再次抱歉。 – user974417

+0

您需要在上面的答案中进行更改的是'$ a'和'if'条件的赋值。够简单。 – nachito

1

试试这个

<?php 
    $a=1; 
    if($a==1){ 
     echo"<div class='delete' style="display:none;">Delete me</div>"; 
    } 
    else{ 
     echo"<div class='delete'>Delete me</div>"; 

    } 
    ?> 
+0

摆脱风格的引号 – nachito

+0

非常抱歉,我发布了错误的代码。我编辑了这篇文章,并且有很好的一篇。正如你所看到的,php正在处理一个表单。再次抱歉。 – user974417

1

你可以这样做:

<?php $a=1; if($a==1) : ?> 

<script> 
    $(document).ready(function() { 
    $('.delete').css("display", "none") 
}); 
</script> 
<?php endif; ?> 

<div class='delete'>Delete me</div> 

但我认为这是更好的做下面的事情:

<?php $a = 1; ?> 

<script> 
    $(document).ready(function() { 
    $('.delete').css("display", "none") 
}); 
</script> 

<div class="<?php echo $a == 1 ? 'delete':'' ?>">Delete me</div> 
0

可能是因为你的脚本在div加载之前运行。 试试这个:

<?php 
$a=1; 
if($a==1){ 

    // echo"<script>$(document).ready(function() { $('.delete').css(\"display\", \"none\")});</script>"; 
    echo"<script>$(function(){$('.delete').css(\"display\", \"none\");});</script>"; 

} 

echo"<div class='delete'>Delete me</div>"; 
?> 
0

我觉得隐藏是最好的。把CSS留给你的CSS文件?

echo"<script>$('.delete').hide();</script>"; 

编辑:和你的JavaScript呢!

0

为什么你使用jQuery来尝试和完成它?只需使用CSS。或者,至少使用jQuery的“live”来解决DIV的HIDE/SHOW问题。执行顺序很重要,我不认为PHP生成的脚本实际上会影响您在PHP条件之后构建和展示的潜水。

0

您的jQuery调用是在页面上打印将接收点击功能的元素之前完成的。

您可以使用自己的注释行代替直接调用。

echo"<script>$(document).ready(function() { $('.delete').css(\"display\", \"none\")});</script>"; 

如果您想使用未注释的呼叫,则需要在div标签后打印它。

<?php 
echo"<div class='delete'>Delete me</div>"; 

$a=1; 
if($a==1){ 
echo"<script>$(function(){$('.delete').css(\"display\", \"none\");});</script>"; 
} 
?> 
0

对于初学者,您实际上并不使用jQuery来更改PHP。 jQuery是客户端的,PHP是服务器端的,从来没有两个人见面。实际发生的情况是,您使用PHP来创建您的HTML文档,并且浏览器将创建一个jQuery将处理的DOM。

至于你的脚本有什么问题,你的代码不起作用的原因是因为这些语句是按顺序回显的。

下不起作用:

<script> 
    $('.delete').css("display","none"); // div.delete doesn't exist yet 
</script> 
<div class="delete">Delete me</div>  <!-- Output *after* the jQuery call. --> 

下不工作:

<script> 
    $(function(){      //wait until document.ready 
     $('.delete').hide();   //hide .delete after ready 
    }); 
</script> 
<div class="delete">Delete me</div>  <!-- Output after <script> but will be hidden after document.ready --> 

除了这个问题,有几个 “代码味道”,将关我的事关于你的代码。请注意,这些都不是技术上的错误,但他们往往指示其他问题:

  1. 你使用jQuery修改DOM在一个非常“纯醇”的Javascript”的方式。
    而不是更改CSS,使用jQuery的.hide()调用。
  2. 您在PHP回声中单引号和双引号之间交替
    您使用$('.delete').css("display", "none"); ...为什么?
  3. 您没有指定您正在使用的脚本的类型
    当然,JavaScript是最常见的 - 但是明确指定脚本语言更好。
  4. 您使用的是隐含的分号码
    这可能会在某些情况下导致意外的行为,应该避免。