javascript - 无限滚动并打破我的其他 JS
问题描述
我正在使用:https ://infinite-scroll.com并遇到了我无法解决的问题。
无限滚动效果很好,这是我的初始化:
var $container = $('.parent').infiniteScroll({
path: '.nav-prev a',
append: '.article',
status: '.scroller-status',
hideNav: '.navigation-index',
});
加载第一页后,它会破坏我的其他 JS。即我在“文章”上有点击功能
$(".article").click(function(){
$(".hidden").hide("fast");
$(this).next('.hidden').slideToggle("fast");
});
滚动开始后,这将停止工作。
我尝试了各种方法,例如:
var $container = $('.parent').infiniteScroll({
$(".article").click(function(){
$(".hidden").hide("fast");
$(this).next('.hidden').slideToggle("fast");
});
});
但我就是无法让它使用我的 JS。我知道我错过了什么?
解决方案
这实际上是一个非常普遍的问题。问题是在添加事件处理程序时将 jquery 事件处理程序添加到 DOM 中的对象。这意味着在您添加新对象后,新对象不会获得事件处理程序。
幸运的是,有一个简单的解决方案,使用 Delegated 事件处理程序如下修改您的事件处理程序:
$(document).on("click",".article",function(){
或者我认为将其添加到.parent
可能会更好,而不是将其添加到document
.
$(".parent").on("click",".article",function(){
无论哪种方式都应该有效,但document
肯定会有效。
所以:
$(".parent").on("click",".article",function(){
$(".hidden").hide("fast");
$(this).next('.hidden').slideToggle("fast");
});
或者:
$(document).on("click",".article",function(){
$(".hidden").hide("fast");
$(this).next('.hidden').slideToggle("fast");
});
推荐阅读
- html - 创建一个按钮以将信息发送到我的邮件 (blogspot)
- c# - 对类中的所有属性使用相同的 getter 和 setter
- javascript - 搜索后我的更新按钮将不再起作用 PHP
- docker - 从第三方 github repo 拉取数据到云存储
- python - 如何连续向下滚动页面直到找到一个元素?蟒蛇硒
- python - Python - 从字典列表中提取键和值
- haskell - 如何获取真实值遵循伯努利分布的布尔值列表
- cmake - CMake FetchContent 传播内容变量
- reactjs - 如何在 Jest/Enzyme 测试中测试 React 'componentDidUpdate()' 和 'shouldComponentUpdate()'?
- c++ - 向量化数值积分 C++ - 错误代码 1200