JQuery从右到左找到选择器匹配的元素。通常,如果我想从左到右选择,我会这样做:$('#context').find('a')
我正在使用on()
为动态生成的元素调用事件处理程序,如:$(document).on('click','#context a',function(){})
。 #context
是动态加载的。在这种情况下如何从左到右选择?
答案 0 :(得分:0)
使用事件委派从左到右与从右到左没有任何好处,因为您实际上只测试单个元素是否与选择器匹配。例如,以下内容等同于您问题中的代码:
$(document).on("click",function(e){
if ($(e.target).is("#context a")) {
// do something
}
})
从左到右与右到左工作的选择器在这里没有任何性能优势。当然,如果你想要,你仍然可以这样做:
$(document).on("click",function(e){
if ($("#context").find("a").filter(function(){
return this == e.target;
}).length) {
// do something
}
})
然后,您必须考虑到这是在较新的浏览器中进行优化以使用Element.matches()
$(document).on("click",function(e){
if (e.target.matches("#context a")) {
// do something
}
})
// note, Element.matches is only supported in chrome 34, all
// other browsers require a vendor prefix at this time
// (which jquery takes care of)