0

我很难找到答案。一定有答案埋在某个地方,但我还没有找到。

简而言之,我使用 Infinite Scroll 将元素附加到 Wordpress 循环中。但是,我没有为此循环使用同位素或砌体插件,这就是我被错误答案所埋没的地方。

在调用 Infinite Scroll 的头脚本之外,我还加载了许多其他函数,据(window).load(function(){...我了解,附加元素应该属于范围。

不幸的是,他们不是。

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

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

4

2 回答 2

1

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

事件委托的建议是有根据的,在实例化无限滚动时传递回调,更是如此。假设您正在使用这个 jQuery 无限滚动插件,您可能会执行以下操作:

$(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) { /* ... */ });
                            };
                        });
    // [...]
};

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

于 2013-08-07T20:25:43.340 回答
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

于 2017-09-29T10:35:54.717 回答