我正在尝试清理并改进一些代码。有一个相当大的代码片段可以将多个事件附加到$(document)
,如下所示:
$(document).on('eventA.nameA', '#pageA', function(){
// do sth
});
$(document).on('eventB.nameB', '#pageB', function(){
// do sth
});
$(document).on('eventC.nameC', '#pageC', function(){
// do sth
});
所以基本上所有的事件绑定都直接在文档上。
问题:
是否有限制(我发现了大约50个单独的文档绑定)以及在单个选择器上设置它的优点/缺点是这样的:
$(document)
.on('eventA.nameA', '#pageA', function(){
// do sth
})
.on('eventB.nameB', '#pageB', function(){
// do sth
})
.on('eventC.nameC', '#pageC', function(){
// do sth
});
大多数绑定都是特定于页面的(它是一个Jquery Mobile应用程序,因此一旦将页面拉入DOM,其绑定就会像这样设置)。因此,实际上没有其他地方可以放置这些绑定,因为在$(document)
持续时会被拉入和拉出。
感谢您的投入!
答案 0 :(得分:2)
将它们放在单个选择器上的优点是每次都避免调用$(document)
(开销较小,因为$(document)
被缓存)。缺点是它们都必须一个接一个,然后再将它们缩进一个级别。这不是很重要。
重要的是,如果它们接近真正的选择器,使用document
上的ID选择器授权可能真的很浪费。只需等到文档准备就绪,或者在元素更新时更新事件处理程序 - 特别是如果所有这些元素实际上不会同时存在于同一页面上。如果选择器实际上比这更复杂,请忽略这一段: - )