我有一个页面,我列出了我的船员(show_crew.php)。该页面使用无限滚动插件运行,就像Google Images一样。首先,我显示10个条目。如果用户到达show_crew.php的底部,则会将旧的“show_crew.php”附加到旧的“show_crew.php”,显示接下来的10个条目。
我在show_crew.php中嵌入了一些Jquery函数,在那里我通过
绑定事件$('body').on('click', 'myButton[rel=<? echo $user['id'] ?>]', function() {
console.log('foo');
})
现在,当show_crew.php被多次追加时,该事件也会多次绑定到同一个按钮。我可以通过$('body').off('click', 'myButton')
每个时间来解决这个问题。
这看起来很难看。有更优雅的方式吗?
感谢, 亚光
答案 0 :(得分:18)
您只需要绑定委派的事件一次。每次加载内容时都不要重新绑定。
使用$('body').on('click', '...selector...', function () {...})
格式将事件处理程序委托给<body>
元素。这意味着正文将捕获所有click
个事件并检查它们是否发生在与...selector...
匹配的元素上。如果是这样,它将触发事件处理程序,就好像它是在匹配的元素上触发的。
一旦添加了委托侦听器,就不必担心重新绑定,因为<body>
的子节点可以更改,并且委托将保留新元素。这是非常好的东西™。