0

我有以下 javascript:

<script>
  $(document).ready(function() {
    $('[class^="commentbubble_"]').click(function () { 
      var ID = $(this).attr('class').replace('commentbubble_', '');
        $('.commentform_'+ID).toggle();
        $('#commentsection').masonry( 'reload' );
    });
  });
</script>

它适用于结果的第一页......但对于新附加的,它不起作用。有没有办法确保此功能适用于新附加的内容?

谢谢你。

4

4 回答 4

3

您可以尝试将事件委托给其父级,该父级在页面加载时可用,或者$(document)本身带有.on()处理程序:

$(document).ready(function() {
  $(document).on('click', '[class^="commentbubble_"]', function () { 
      var ID = $(this).attr('class').replace('commentbubble_', '');
      $('.commentform_'+ID).toggle();
      $('#commentsection').masonry( 'reload' );
  });
});
于 2013-03-28T05:07:54.430 回答
0

$().ready 仅适用于当前元素

当您附加一个元素时,您需要绑定的是点击事件

于 2013-03-28T05:18:52.587 回答
0

由于您在加载页面后在 ajax 加载上附加数据,因此您需要使用.on事件处理程序来绑定元素上的任何事件而不是 .click 事件。

语法是:

.on( events [, selector ] [, data ], handler(eventObject) )

所以你的脚本会是这样的:

<script>
  $(document).ready(function() {
    $('document).on('click','[class^="commentbubble_"]',function () { 
      var ID = $(this).attr('class').replace('commentbubble_', '');
        $('.commentform_'+ID).toggle();
        $('#commentsection').masonry( 'reload' );
    });
  });
</script>

如需更多参考,请参阅http://api.jquery.com/on/

于 2013-03-28T05:20:16.887 回答
-1

使用现场

('[class^="commentbubble_"]').live ('click', function () {

注意: live已弃用,请on按照@Jai 的建议使用

于 2013-03-28T05:09:17.213 回答