为什么我的jQuery forPHP循环中的jQuery show()函数仅适用于第一个元素

时间:2019-02-07 10:56:39

标签: javascript jquery wordpress foreach

我的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
    }
}

您的问题是什么?谢谢您的时间

1 个答案:

答案 0 :(得分:0)

您要多次定义全局变量div_sc。所有<script>标签共享相同的范围,因此仅保留一个值。 .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>