因为我想缓存我的jQuery选择器以便稍后使用。
为此,我可以这样做:
var parent = $('#parent');
$('.arrow', parent).click(function(){});
如果我的#parent
或#parent .arrow
是动态元素,则此代码无效。为此,我需要使用.on()
$(document).on('click', '#dynamicParent .arrow', function(){});
但是现在我没有缓存选择器。我如何缓存选择器,然后在.on()
事件绑定中使用它?
像
这样的东西$(document).on('click', '.arrow', dynamicParet, function(){})
答案 0 :(得分:0)
如果只有.arrow
是动态的,您可以使用
var $parent = $('#parent');
$parent.on('click', '.arrow', function () {});
如果父级是动态的,则无法按定义缓存它
答案 1 :(得分:0)
委托事件处理程序无法使用缓存,因为选择器在事件时应用,但它们无论如何都不需要缓存,因为它们非常有效。除非你可以每秒点击50,000次,否则你会担心错误的事情:)
只需使用委派的事件处理程序。您可以做的最好的事情是提高效率(一点点)是将委托的事件处理程序绑定到最近的非动态元素。
e.g。如果#dynamicParent
本身不是动态的:
$('#dynamicParent').on('click', '.arrow', function(){});