我有一个页面,我列出我的船员(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');
})?
Run Code Online (Sandbox Code Playgroud)
现在,由于show_crew.php被多次追加,因此该事件也多次绑定到同一按钮.我可以通过$('body').off('click', 'myButton')EACH TIME 解决这个问题.
这看起来很难看.有更优雅的方式吗?
谢谢,亚光
zzz*_*Bov 18
您只需要绑定委派的事件一次.每次加载内容时都不要重新绑定.
使用格式$('body').on('click', '...selector...', function () {...})将事件处理程序委托给<body>元素.这意味着主体将捕获所有click事件并检查它们是否发生在匹配的元素上...selector....如果是这样,它将触发事件处理程序,就好像它是在匹配的元素上触发的一样.
一旦添加了委托侦听器,就不必担心重新绑定,因为<body>可以更改子节点,并且委托将保留新元素.这是一件非常好的事情.