Почему моя функция jQuery show () в цикле php foreach работает только для первого элемента - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть следующая проблема в моем проекте 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 голосов
/ 07 февраля 2019

Вы определяете глобальную переменную 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...