不确定如何解决这个问题,但现在就去了。
假设您可以在单击按钮$(document).ready(function(){
$(".btn").click(function(){...});
});
时执行jQuery中的过程:
.btn
这适用于文档准备好时存在的所有.btn
元素。当我们需要将此功能用于动态加载的.static-container
元素时,我们需要先解决这些元素至包含动态加载元素的静态对象,即$(".static-container")
.on("click", ".btn", function(){...});
});
:
body
然而,任何静态元素都会做,而不仅仅是与元素最接近的元素,也就是#page-wrapper
,或者常用的before_save do |row|
row._id = row.delete('pre_mongified_id')
end
或类似的东西。
我有一组这样的回调,我希望将其包含在可能具有不同体系结构的多个页面上,因此我需要在每个页面上显示某种容器,这意味着我可能不太具体。
我的问题是:
指定静态容器时,更具体(意味着:DOM树中的深度多少)要快多少?在这方面有什么好的做法?
答案 0 :(得分:1)
最佳做法是将最接近的静态父元素用于动态内容,即尽可能深入DOM树。
这样做的结果是事件具有更少的要通过的元素,因此处理得更快。实际上它是毫秒的差异,但谁不想要最快的代码。
另请注意,重要的是不要将所有委派的事件处理程序放在单个根元素(例如document
,body
或共享容器)上,因为这可能会导致一些减速是单个元素上的众多事件处理程序。因此,live()
在几年前被弃用并删除了。