我在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;
答案 0 :(得分:3)
你应该这样做:
<?
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:会有更多'优雅'的解决方案,你想要一个吗?或者这就足够了?答案 1 :(得分:2)
你能描述一下你想要做什么吗?我大约90%肯定没有任何javascript,jQuery或其他原因。
为什么不这样做?
<?php
foreach($perfs as $perf)
{
echo "<div class='transparency' data-title='$perf'>$perf</div>";
}
?>
除非您尝试做更多事情,否则您根本不需要javascript。即使你确实需要javascript,也可以将函数从循环中取出并在每次迭代时调用它。你不需要多次定义完全相同的函数。
我建议您研究服务器和客户端脚本之间的关系。对于初学者 - 看一下PHP生成的HTML源代码,看看是否有任何接近你想要的东西。另外,阅读有关ajax的信息。您似乎正在尝试以这样的方式组合PHP / javascript,以至于它需要额外的HTTP请求(ajax调用)
答案 2 :(得分:1)
如果没有AJAX,就不可能让PHP和javascript直接交互,如果不知道你想要发生什么,就很难回答这个问题。
如果您想为transparacy
的每个值使用不同的$perfs
div,您可以使用:
<?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>
这将输出$perfs
div内的transparency
的每个值。
您永远不会想要在script
循环中包装整个foreach
,因为这会为数组中的每个元素创建一个单独的脚本。使用json_encode
,您将PHP数组更改为javascript对象&amp;你可以用它做任何你想做的事。
请记住,javascript只能使用echo
或类似内容访问写入页面的元素。无论您在浏览器中查看“查看页面源”,您都可以看到所有脚本都可以使用。