在PHP foreach循环中生成JQuery代码

时间:2013-02-09 05:24:51

标签: php jquery foreach increment

更新 对于JLRiche

下面的html结构(这里是整个div id = content_body_right的结构):

    <div id="content_body_right">
        <p class="user_text">Tim Flanagan</p><p class="date_text">02-06-2013 @ 12:00PM</p>
                <p class="message_text">Playin Augusta today. What a beautiful course!</p>
                <div id="activity_image">
                    <img src="images/activities/1/actimg.jpg" width="435" />
                </div>
                <div id="tips">
                    <div id="tip_cap_left">
                        <a href="dashboard.php?captip=tipyourcap" title="Tip Your Cap" ></a>
                    </div>
                    <div id="tip_cap_right">
                        <p class="tips_right">12 Tips of the Cap</p>
                    </div>
                </div>
                <p class="comments_label">
                    4 Comments&nbsp;&nbsp;&nbsp;
                    <a href="#" class="see_all" style="display:inline-block" title="See All Comments">see all</a>
                    <a href="#" class="collapse" style="display:none" title="Collapse Comments">collapse</a>
                </p>
                <div id="comment1">
                    <div id="comment_user_img">
                        <img src="images/defaultuserimg.jpg" width="30" height="30" />
                    </div>
                    <div id="comment_user">
                        <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p>
                        <p class="message_text_comment">Nice jealous of you bro.</p>
                    </div>
                </div>
                <div class="comment2" style="display:none; clear:both; margin:0px; overflow:auto">
                    <div id="comment2_sub">
                        <div id="comment_user_img">
                            <img src="images/defaultuserimg.jpg" width="30" height="30" />
                        </div>
                        <div id="comment_user">
                            <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p>
                            <p class="message_text_comment">Nice jealous of you bro.</p>
                        </div>
                    </div>
                    <div id="comment2_sub"> 
                        <div id="comment_user_img">
                            <img src="images/defaultuserimg.jpg" width="30" height="30" />
                        </div>
                        <div id="comment_user">
                            <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p>
                            <p class="message_text_comment">Nice jealous of you bro.</p>
                        </div>
                    </div>
                    <div id="comment2_sub">                  
                        <div id="comment_user_img">
                            <img src="images/defaultuserimg.jpg" width="30" height="30" />
                        </div>
                        <div id="comment_user">
                            <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p>
                            <p class="message_text_comment">Nice jealous of you bro.</p>
                        </div>
                    </div>
                </div>
    </div>

如果您需要更多结构,请告诉我,因为它上面和下面都有很多。希望这可以帮助。 我真的很感谢你的帮助!

END UPDATE

晚安,

我需要在X量的db结果中动态创建X量的jquery脚本。 X表示数字会有所不同。这是一种论坛类型的东西,你看到原始帖子显示一个回复,你会点击查看全部或全部折叠查看或折叠其余的。我正在使用典型的$ i变量在foreach循环中增加我的html元素,所以我还需要为每个变量输出jquery click函数。

我需要PHP创建的代码如下:

$jquery .= "$('#see_all$i').click(function () {
    $('#comment2_$i').slideDown('fast');
    $('#collapse$i').css('display', 'inline-block');
    $('#see_all$i').css('display', 'none');
    return false;
});

$('#collapse$i').click(function () {
    $('#comment2_$i').slideUp('fast');
    $('#collapse$i').css('display', 'none');
    $('#see_all$i').css('display', 'inline-block');
    return false;
})";

任何帮助都会非常感激!

由于

2 个答案:

答案 0 :(得分:2)

生成相同jQuery代码的多个略有不同的副本并不是一个非常好的设计,恕我直言。您应该以一种只需要在页面中的方式编写jQuery代码,例如:

$('.see_all').click(function(){
     var thisItem = $(this);
     thisItem.parent().find('.comment').slideDown('fast');
     thisItem.parent().find('.collapse').css('display','inline-block');
     thisItem.css('display','none');
     return false;
}); 

$('.collapse').click(function(){
     var thisItem = $(this);
     thisItem.parent().find('.comment').slideUp('fast');
     thisItem.css('display','none');
     thisItem.parent().find('.see_all').css('display','inline-block');
     return false;
})";

当然,这还需要将collapsesee_allcomment类添加到相关的HTML元素中。

答案 1 :(得分:0)

html:

<div class="seeall" data-elid="1">...</div>
...
<div class="collapse" data-elid="1">...</div>
...

js:

var $bdy=$(document.body)
$bdy.on("click",".seeall",function(e) {
      var el=$(this).css('display','none').data("elid");
      $('#comment2_'+el).slideDown('fast');
      $('.collapse[data-elid="'+el+'"]').css('display','inline-block');
     })
     .on("click",".collapse", function(e) {
               //same same
     });