在foreach循环中的Jquery

时间:2011-05-07 19:44:03

标签: php jquery

我在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;

3 个答案:

答案 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 == '&nbsp;' ){
         $(".transparency").html(performerName); 
       }
    });
    </script>

   <div class="transparency" data-title="<? echo $perf; ?>">&nbsp;</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; ?>">&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>

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

使用JQuery eachappend

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

请记住,javascript只能使用echo或类似内容访问写入页面的元素。无论您在浏览器中查看“查看页面源”,您都可以看到所有脚本都可以使用。