在infinitescroll之后点击事件的Jquery无效

时间:2015-05-11 19:39:55

标签: php jquery ajax cakephp

我正在使用cakephp框架和jquery infinitescroll插件来动态加载内容。每个帖子都有一个带有ajax动作的链接。

当加载页面时,有5个帖子,ajax链接正常工作。 但当加载其他5个带infitescroll(ajax)的帖子时,ajax链接无效。

看起来ajax函数找不到链接的id但我找不到解决方案。

 <a href="/questions" onclick="return false"><i class="glyphicon glyphicon-circle-arrow-right" id="581617"></i></a>

<script type="text/javascript">
 $(document).on("click","#581617",function(){
        $.ajax({url: "the_url", 
                    type:'post',
           })   });
    </script>

更新:根据@ ZacharyKniebel的解决方案进行更改后,我正在尝试编写我的选择器以使用下面的ID附加到链接,这是行不通的。谁能告诉我为什么?

"a > i.glyphicon.<?php echo $linkId;?>"

1 个答案:

答案 0 :(得分:0)

看起来您只为ID为#581617的元素委派处理程序。相反,请尝试委托您的处理程序更广泛地查找您的a > i.glyphicon.glyphicon-circle-arrow-right元素:

$(document).on("click","a > i.glyphicon.glyphicon-circle-arrow-right",function(){
    $.ajax({
        url: "the_url", 
        type:'post'
    });   
});

作为旁注,在上面我还为了IE功能删除了type:'post'之后的尾随逗号。尽管保留尾随逗号在技术上是有效的,但IE并不是非常喜欢它。


更新:

关于您现在尝试使用的选择器,请注意,如果您通过ID选择它们,则无法使选择器适用于所有新加载的链接。从技术上讲,有一些解决方法可以做到这一点,但它们令人难以置信的肮脏并且表现糟糕。这是因为ID是唯一的,并且通过ID绑定此处理程序就像尝试单独绑定到每个链接,而不是一次绑定到所有链接。 (从技术上讲,由于这是一个委托的处理程序,你并没有真正绑定到链接,但你正在倾听它们。)

简而言之,我在上面给你的选择器就是你想要用来让你的事件处理程序监听所有这些选择器。