我在foreach循环中有这个jquery代码。基本上,变量$perf每次循环都会获得一个新值。如何使用 jquery 在每个循环中显示不同的$perf值?可能吗?
foreach ($perfs as $perf):
<script type="text/javascript">
$(document).ready(function(){
var performerName = $(".transparency").data('title');
var divcontent = $(".transparency").html();
if ( divcontent == ' ' ){
$(".transparency").html(''+performerName+'');
}
});
</script>
<div class="transparency" data-title="<? echo $perf; ?>"> </div>
endforeach;
你应该这样做:
<?
foreach ($perfs as $perf):
?>
<script type="text/javascript">
$(document).ready(function(){
var $perf = "<? echo $perf; ?>"; //Get from php
alert($perf); //Show it
//Here goes the rest of your script
var performerName = $(".transparency").data('title');
var divcontent = $(".transparency").html();
if ( divcontent == ' ' ){
$(".transparency").html(performerName);
}
});
</script>
<div class="transparency" data-title="<? echo $perf; ?>"> </div>
<?
endforeach;
?>
就是这样。它有效。
(我试图至少尽可能修改您的代码,因为我不知道我是否可以删除部分)
PS:会有更"优雅"的解决方案,你想要一个吗?或者这就足够了?
你能描述一下你想做什么吗?我大约90%确定任何javascript,jQuery或其他方法都没有理由。
为什么不这样做呢?
<?php
foreach($perfs as $perf)
{
echo "<div class='transparency' data-title='$perf'>$perf</div>";
}
?>
除非你还有更多的事情要做,否则你根本不需要javascript。 即使你确实需要javascript,也要把函数从循环中取出,并在每次迭代中调用它一次。 您不需要多次定义完全相同的函数。
我建议您研究服务器和客户端脚本之间的关系。 对于初学者 - 看看你的PHP生成的HTML源代码,看看它是否接近你想要的。 另外,请阅读有关ajax的信息。 似乎您正在尝试以需要其他HTTP请求(ajax调用)的方式组合PHP/javascript。
没有 AJAX 就不可能让 PHP 和 JavaScript 直接交互,而且如果不了解你想要发生什么,就很难回答这个问题。
如果您希望每个值使用不同的 transparacy
div $perfs
可以使用:
<?php foreach ($perfs as $perf) { ?>
<div class="transparency" data-title="<?php echo $perf; ?>"> </div>
<?php } ?>
您可以使用 jquery .each()
来迭代div
$(".transparency").each( function() {
var performerName = $(this).data('title');
// do stuff //
});
如果你只想将$perfs中的值传递给你的javascript函数,你可以使用
var perfs = <?php echo json_encode($perfs); ?>;
好的,我想我明白你现在想做什么了。你会想要这样的东西:
<script type="text/javascript">
$(document).ready(function(){
var perfs = <?php echo json_encode($perfs); ?>;
$.each( perfs, function( index, value ) {
$( ".transparency" ).append( value+'<br>' );
} );
} );
</script>
<div class="transparency"></div>
这将输出transparency
div 内的每个 $perfs
值。
使用 JQuery 每个和附加。
您永远不希望将整个script
包装在 foreach
循环中,因为这将为数组中的每个元素创建一个单独的脚本。使用json_encode
,您将PHP数组更改为javascript对象,您可以对它做任何您想做的事情。
请记住,javascript只能使用echo
或类似的东西访问写入页面的元素。当您在浏览器中查看"查看页面源代码"时,您能看到的任何内容都是您的脚本可以使用的所有内容。