【问题标题】:Why my jQuery show() function in php foreach loop work only for first element为什么我在 php foreach 循环中的 jQuery show() 函数仅适用于第一个元素
【发布时间】:2019-07-01 11:24:01
【问题描述】:

我的 wordpress 项目遇到以下问题:

我有 2 个 div 调用“div_sc_1”和“div_sc_2”,它们隐藏在我的页面上。 如果它们没有被“检查”,我想用 jQuery 函数 .show() 来展示它们。 “已检查”状态已写入我的数据库中。

使用我的实际代码,如果只有 div_sc_1 或 div_sc_2 没有“检查”,一切都很好,但是如果两个 div 都没有检查,只有一个显示,我不明白为什么。

这是我的代码:

foreach($list_id_scores as $scores){
    $id_s = $scores->id_score;
    $checked = $wpdb->get_var( "SQL query for 'checked' status");
    if($checked == "1"){
        echo " score n°".$id_s." is over<br />";
    }else{
        $div_id = "div_sc_".$id_s;
        echo $div_id;    /// this echo show me that my loop is working  
    ?>
    <script>
        var div_sc = <?php echo json_encode($div_id); ?>;
        jQuery(document).ready(function(){ jQuery("#"+div_sc).show(); });   
    </script>
    <?php
    }
}

你有什么问题?感谢您的宝贵时间

【问题讨论】:

  • 请编辑问题,使代码清晰可见。
  • @Rory McCrossan。编辑完成,是不是更好?对不起,我的表现太差了
  • 您在复制 id。 ID 必须是唯一的。类可以针对多个元素。如果您重复 id,这是标准行为。
  • @Rousto 这是正确格式化和缩进代码的方法。不仅是为了 SO,而且是为了在编写、编辑或调试代码时代码本身的可读性

标签: javascript jquery wordpress foreach


【解决方案1】:

您定义了一个全局变量div_sc 多次。所有&lt;script&gt; 标签共享相同的范围,因此只保留一个值。 .ready() 处理程序仅在所有变量都已定义(并且页面的其余部分已完成加载)后才执行,而不是介于两者之间。

这样做可能会更好:

<script>
jQuery(document).ready(function(){
<?php
foreach($list_id_scores as $scores){
    $id_s = $scores->id_score;
    $checked = $wpdb->get_var( "SQL query for 'checked' status");
    if($checked == "1"){
        echo " score n°".$id_s." is over<br />";
    }else{
        $div_id = "div_sc_".$id_s;
        echo $div_id;    /// this echo show me that my loop is working  
    ?>
    jQuery("#"+<?php echo json_encode($div_id); ?>).show();
    <?php
    }
}
});
</script>

【讨论】:

  • 实际上他多次声明了整个脚本标签。脚本应该不在 foreach 中。
  • 当然可以,但除了丑之外,这并不是真正的问题。它应该可以正常工作。
  • @jvdmr 非常感谢!它正在工作。现在我将尝试深入了解原因:)
  • @Lelio Faieta Tanks 寻求回应。我的代码仍然没有正确格式化和缩进?我只是想提高“如何做好”的知识
  • @jvdmr 非常感谢,你太棒了,我明白了!
猜你喜欢
  • 2022-01-04
  • 2016-05-17
  • 2014-05-22
  • 1970-01-01
  • 2013-01-11
  • 2011-08-25
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多