正确调整jQuery以支持动态内容

时间:2016-11-24 10:13:38

标签: jquery html

不确定如何解决这个问题,但现在就去了。

假设您可以在单击按钮$(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树中的深度多少)要快多少?在这方面有什么好的做法?

1 个答案:

答案 0 :(得分:1)

最佳做法是将最接近的静态父元素用于动态内容,即尽可能深入DOM树。

这样做的结果是事件具有更少的要通过的元素,因此处理得更快。实际上它是毫秒的差异,但谁不想要最快的代码。

另请注意,重要的是不要将所有委派的事件处理程序放在单个根元素(例如documentbody或共享容器)上,因为这可能会导致一些减速是单个元素上的众多事件处理程序。因此,live()在几年前被弃用并删除了。