jQuery'on'父选择器重用

时间:2014-12-30 08:08:10

标签: jquery caching jquery-selectors

因为我想缓存我的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(){})

2 个答案:

答案 0 :(得分:0)

如果只有.arrow是动态的,您可以使用

var $parent = $('#parent');
$parent.on('click', '.arrow', function () {});

如果父级是动态的,则无法按定义缓存它

答案 1 :(得分:0)

委托事件处理程序无法使用缓存,因为选择器在事件时应用,但它们无论如何都不需要缓存,因为它们非常有效。除非你可以每秒点击50,000次,否则你会担心错误的事情:)

只需使用委派的事件处理程序。您可以做的最好的事情是提高效率(一点点)是将委托的事件处理程序绑定到最近的非动态元素。

e.g。如果#dynamicParent本身不是动态的:

$('#dynamicParent').on('click', '.arrow', function(){});