将jQuery函数应用于附加的Infinite Scroll元素

时间:2013-08-07 19:59:47

标签: jquery ajax infinite-scroll

我很难找到答案。必须有一个安置在某处的答案,但我还没有找到它。

简而言之,我使用Infinite Scroll将元素附加到Wordpress循环中。但是我没有在这个循环中使用Isotope或Masonry插件,这就是我被错误的答案埋葬的地方。

在我的标题脚本之外调用Infinite Scroll,我有一大堆其他函数正在加载(window).load(function(){...,根据我的理解,附加的元素应该属于范围。

不幸的是他们没有。

我的问题是,即使在添加了新的Ajax元素之后,也不应该(window).load执行每个适用的元素吗?

可根据要求提供代码,但我希望这是一个简单的语法答案......

2 个答案:

答案 0 :(得分:1)

您的问题的答案是:不,$(window).load()在附加元素时不会触发,但仅在window对象的onload事件触发时触发,即在初始完成时触发页面加载。

事件委托的建议是有根据的,并且在实例化无限卷轴时传递回调的建议更是如此。假设您正在使用this jQuery infinite scroll plugin,您可能会执行以下操作:

$(window).load(function() {
    // [...]
    $('#infinite-scroll-element')
        .infinitescroll({ /* options */ },
                        // callback to handle binding events on newly added elements
                        function(newElements) {
                            // iterate across the elements just added
                            for (var i = 0; i < newElements.length; i++) {
                                var thisElement = newElements[i];
                                // bind your event handlers here, e.g.:
                                $(thisElement).click(function(evt) { /* ... */ });
                                $(thisElement).mouseover(function(evt) { /* ... */ });
                            };
                        });
    // [...]
};

其他插件可能会提供一些类似的功能。

答案 1 :(得分:0)

最新版本的http://www.infinite-scroll.com/以及砌体:http://masonry.desandro.com/以下代码适用于我:

 $grid.on( 'append.infiniteScroll', function( event, response, path, items ) {
        $(this).next(".info").slideToggle("fast"); 
      // OR your code you want to load after infinite scroll loads
    });

点击此处https://infinite-scroll.com/events.html#append