【问题标题】:Why doesn't this jQuery css() call work?为什么这个 jQuery css() 调用不起作用?
【发布时间】:2011-10-06 00:18:36
【问题描述】:

在 php if 结构中我不需要显示 div。 我在做:

 <?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 显示我在 de if .. 中使用哪一行并不重要 我究竟做错了什么?

谢谢一百万

【问题讨论】:

    标签: php jquery css html document


    【解决方案1】:

    与其放入 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>';
    }
    

    【讨论】:

    • 非常抱歉,我发布了错误的代码。我已经编辑了这篇文章,并且有一个很好的。如您所见,php 正在处理一个表单。再次抱歉。
    • 您需要在上述答案中进行更改的只是分配$aif 条件。很简单。
    【解决方案2】:

    试试这个

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

    【讨论】:

    • 转义样式周围的引号
    • 非常抱歉,我发布了错误的代码。我已经编辑了这篇文章,并且有一个很好的。如您所见,php 正在处理一个表单。再次抱歉。
    【解决方案3】:

    你可以这样做:

    <?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>
    

    【讨论】:

      【解决方案4】:

      可能是因为您的脚本在加载 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>";
      ?>
      

      【讨论】:

        【解决方案5】:

        我认为隐藏是最好的。将 css 留给您的 css 文件?

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

        编辑:还有你的javascript!

        【讨论】:

          【解决方案6】:

          你为什么要使用 jQuery 来尝试实现它?只需使用 CSS。

          或者,至少,使用 jQuery 的“live”来处理 DIV 的 HIDE/SHOW。执行顺序很重要,我认为 PHP 生成的脚本实际上不会影响您在 PHP 条件之后构建和显示的潜水。

          【讨论】:

            【解决方案7】:

            您的 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>";
            }
            ?>
            

            【讨论】:

              【解决方案8】:

              对于初学者,您实际上并没有使用 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 以非常“普通的 Javascript”方式修改 DOM。
                不要更改 CSS,而是使用 jQuery 的 .hide() 调用。
              2. 您在 PHP 回显中交替使用单引号和双引号
                你用$( '.delete' ).css( "display", "none");...为什么?
              3. 您没有指定您正在使用的脚本类型
                当然,JavaScript 是最常见的 - 但最好明确指定脚本语言。
              4. 您使用了隐含的分号
                在某些情况下,这可能会导致意外行为,应避免。

              【讨论】:

                猜你喜欢
                • 2011-08-08
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-06-20
                • 2011-11-21
                • 1970-01-01
                • 2013-10-22
                • 2021-10-22
                相关资源
                最近更新 更多