JQuery on():如何让JQuery从左到右找到选择器?

时间:2014-02-20 19:16:20

标签: javascript jquery

JQuery从右到左找到选择器匹配的元素。通常,如果我想从左到右选择,我会这样做:$('#context').find('a')

我正在使用on()为动态生成的元素调用事件处理程序,如:$(document).on('click','#context a',function(){})#context是动态加载的。在这种情况下如何从左到右选择?

1 个答案:

答案 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)