Javascript 累积jQuery函数

Javascript 累积jQuery函数,javascript,jquery,ajax,infinite-scroll,Javascript,Jquery,Ajax,Infinite Scroll,我习惯于通过ajax加载内容(每次加载3篇文章,每篇文章都有“按钮”) 初始页面加载(3个帖子:A、B、C): 我立即收到以下警报: "1. Initial load" "End" 如果我点击帖子中的按钮,那么我会收到“按钮被点击”的警报 加载下一组立柱(6根立柱:A、B、C、D、E、F) 单击按钮时,我会收到以下警报: Post-A(1st load): "Button is clicked" "Button is clicked" Post-B(1st

我习惯于通过ajax加载内容(每次加载3篇文章,每篇文章都有“按钮”)

  • 初始页面加载(3个帖子:A、B、C):

    我立即收到以下警报:

    "1. Initial load"
    
    "End"
    
    如果我点击帖子中的按钮,那么我会收到“按钮被点击”的警报

  • 加载下一组立柱(6根立柱:A、B、C、D、E、F) 单击按钮时,我会收到以下警报:

    Post-A(1st load): 
            "Button is clicked"
            "Button is clicked"
    Post-B(1st load): 
            "Button is clicked"
            "Button is clicked"
    Post-C(1st load): 
            "Button is clicked"
            "Button is clicked"
    Post-D(2nd load): 
            "Button is clicked"
    Post-E(2nd load): 
            "Button is clicked"
    Post-F(2nd load): 
            "Button is clicked"
    
    Post-A(1st load): 
            "Button is clicked"
            "Button is clicked"
            "Button is clicked"
    Post-B(1st load): 
            "Button is clicked"
            "Button is clicked"
            "Button is clicked"
    Post-C(1st load): 
            "Button is clicked"
            "Button is clicked"
            "Button is clicked"
    Post-D(2nd load): 
            "Button is clicked"
            "Button is clicked"
    Post-E(2nd load): 
            "Button is clicked"
            "Button is clicked"
    Post-F(2nd load): 
            "Button is clicked"
            "Button is clicked"
    Post-G(3rd load): 
            "Button is clicked"
    Post-H(3rd load): 
            "Button is clicked"
    Post-I(3rd load): 
            "Button is clicked"
    
  • 请注意,初始加载现在显示两个警报

  • 加载第三组立柱(9根立柱:A、B、C、D、E、F、G、H、I) 单击按钮时,我会收到以下警报:

    Post-A(1st load): 
            "Button is clicked"
            "Button is clicked"
    Post-B(1st load): 
            "Button is clicked"
            "Button is clicked"
    Post-C(1st load): 
            "Button is clicked"
            "Button is clicked"
    Post-D(2nd load): 
            "Button is clicked"
    Post-E(2nd load): 
            "Button is clicked"
    Post-F(2nd load): 
            "Button is clicked"
    
    Post-A(1st load): 
            "Button is clicked"
            "Button is clicked"
            "Button is clicked"
    Post-B(1st load): 
            "Button is clicked"
            "Button is clicked"
            "Button is clicked"
    Post-C(1st load): 
            "Button is clicked"
            "Button is clicked"
            "Button is clicked"
    Post-D(2nd load): 
            "Button is clicked"
            "Button is clicked"
    Post-E(2nd load): 
            "Button is clicked"
            "Button is clicked"
    Post-F(2nd load): 
            "Button is clicked"
            "Button is clicked"
    Post-G(3rd load): 
            "Button is clicked"
    Post-H(3rd load): 
            "Button is clicked"
    Post-I(3rd load): 
            "Button is clicked"
    
  • 请注意,第一次加载显示三个警报,第二次加载显示两个警报

    我不知道发生了什么事


    有人能帮我吗?

    这是因为您在绑定事件时,并不关心给定对象已经绑定了事件,因此每次绑定事件时都会触发一次单击

    就是这个,

    jQuery('.button').click(function(e) { });
    
    不管事件是否已绑定,它将绑定一个新副本

    我需要检查是否
    jQuery('.button')。单击(someFunc)
    也会多次开火(我相信是这样)。因此,我的建议是:

    a) 在绑定事件时向按钮添加类,然后忽略具有该类的对象

    b) 在创建按钮时向其添加类,然后在绑定事件时将其删除

    编辑:

    根据@Stryner的评论,更好的解决方案是使用
    ias()
    传递的
    items
    数组,例如:

    jQuery.ias().on('rendered', function(items) {           
        jquery.each(items,function(i, val) {
            val.click(function(e) {       
                alert('Button is clicked ');            
            });
        });
    });
    

    另一个建议是使用IAS提供的
    项目
    。啊,是的。这也会起作用。这实际上是最好的解决办法。谢谢你的建议。我对如何使用
    项有点困惑。你能给我举个简单的例子吗?谢谢你的回答。我想我的jquery是正确的。谢谢。我要试试看!