Jquery inside foreach loop


Jquery inside foreach loop

我在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 == '&nbsp;' ){
    $(".transparency").html(''+performerName+''); 
    }
    });
    </script>
   <div class="transparency" data-title="<? echo $perf; ?>">&nbsp;</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 == '&nbsp;' ){
         $(".transparency").html(performerName); 
       }
    });
    </script>
   <div class="transparency" data-title="<? echo $perf; ?>">&nbsp;</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 直接交互,而且如果不了解你想要发生什么,就很难回答这个问题。

如果您希望每个值使用不同的 transparacydiv $perfs可以使用:

<?php foreach ($perfs as $perf) { ?>
   <div class="transparency" data-title="<?php echo $perf; ?>">&nbsp;</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>

这将输出transparencydiv 内的每个 $perfs 值。

使用 JQuery 每个和附加。

您永远不希望将整个script包装在 foreach 循环中,因为这将为数组中的每个元素创建一个单独的脚本。使用json_encode,您将PHP数组更改为javascript对象,您可以对它做任何您想做的事情。

请记住,javascript只能使用echo或类似的东西访问写入页面的元素。当您在浏览器中查看"查看页面源代码"时,您能看到的任何内容都是您的脚本可以使用的所有内容。