У меня есть массив на PHP (он должен быть PHP по несколько сложным причинам, которые выходят за рамки этого поста):
<?php
$arr = array(Div1, Div2);
foreach ($arr as $value) {
print_r($value);
}
?>
Затем у меня есть Jquery, который я пытаюсь использовать, чтобы скрыть каждый элемент, у которого есть класс в этом массиве.
<script>
$(document).ready(function(){
$("."+"<?php echo $value; ?>").hide();
});
</script>
Однако это скрывает только те элементы, чей класс эквивалентен последнему элементу в массиве. Другими словами, только предметы, чей класс Div2
скрывать. Как я могу применить это к каждому элементу в массиве?
Вы можете взять массив php и использовать его в javascript. самый простой способ — использовать json:
<?php
$arr = array('Div1', 'Div2');
?>
<script>
$(document).ready(function(){
var arr = <?=json_encode($arr);?>;
arr.forEach((className)=>$("."+className).hide());
});
</script>
или вы можете присоединиться к массиву и позволить jquery перебирать его:
<script>
$(document).ready(function(){
var arr = <?=json_encode($arr);?>;
$('.'+arr.join(', .')).hide();
});
</script>
после foreach
петли заканчиваются, $value
все еще привязан к последнему значению вашего $arr
, либо как-нибудь включить вывод js в цикл, либо снова перебрать массив в вашем цикле js-php
Замените эту строку JS этим, она будет работать до тех пор, пока $arr
находится в области действия, где бы ни находился код JS (который должен основываться на вашем вопросе).
<?php
foreach($arr as $value) {
echo '$("' . '.' . $value . '").hide();';
}
?>
Ранее вы просто зацикливались на массиве и ничего не делали со значениями (кроме использования print_r()
на них). Поэтому, когда вы достигли кода во втором фрагменте, только последнее значение $value
был пригоден для использования.
Пожалуйста, замените его кодом ниже и проведите тест.
<script>
$(document).ready(function(){
<?php
$arr = array(Div1, Div2);
foreach ($arr as $value) {
echo '$("."+"'.$value.').hide();';
}
?>
});
</script>
Попробуй это :
<?php
$arr = array(Div1, Div2);
//give us the resulat of this please add to the post
var_dump($arr);
$array_to_object_json = json_encode($arr);
?>
Нам нужно знать, что вернуть этот var_dump
<script>
var global_json_from_php = <?php echo $array_to_object_json; ?>;
$(document).ready(function(){
console.log(global_json_from_php);
for(i in global_json_form_php){
$("."+global_json_from_php[i]).hide();
}
});
</script>