我在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
的项隐藏。如何使这适用于数组中的每个项目?
答案 0 :(得分:2)
你可以使用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>
答案 1 :(得分:1)
在foreach
循环结束后,$value
仍然绑定到$arr
的最后一个值。要么以某种方式将js-output包含到循环中,要么在js-php-loop中再次循环遍历数组
答案 2 :(得分:1)
用这个替换JS行,只要$arr
在JS代码所在的范围内(它应该基于你的问题),它就会起作用。
<?php
foreach($arr as $value) {
echo '$("' . '.' . $value . '").hide();';
}
?>
您之前只是在数组上循环而没有对值进行任何操作(除了在它们上使用print_r()
之外)。因此,当您到达第二个代码段中的代码时,只有$value
的最后一个值可用。
答案 3 :(得分:0)
请将其替换为以下代码并进行测试。
<script>
$(document).ready(function(){
<?php
$arr = array(Div1, Div2);
foreach ($arr as $value) {
echo '$("."+"'.$value.').hide();';
}
?>
});
</script>
答案 4 :(得分:0)
试试这个:
<?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>