Javascript 是否可以在Jquery中注册对不包括嵌套元素的元素的单击?

Javascript 是否可以在Jquery中注册对不包括嵌套元素的元素的单击?,javascript,jquery,events,jquery-mobile,click,Javascript,Jquery,Events,Jquery Mobile,Click,我有以下HTML: <div data-role="page" id="some"> <p>Hello world</p> <div data-role="panel" id="panel"> <p>I'm a panel</p> </div> </div> 将事件.target对象与选择器匹配。 用于遍历树,以确保我们没有单击禁

我有以下HTML:

 <div data-role="page" id="some">               
    <p>Hello world</p>
    <div data-role="panel" id="panel">
      <p>I'm a panel</p>
    </div>
 </div>

事件.target
对象与选择器匹配。
用于遍历树,以确保我们没有单击禁止元素的子元素。要包含单击的元素,请使用

前面描述的方法返回元素的jQuery集合。使用
.length
检查此属性的大小。如果大小非零,
返回

$('div:jqmData(role="page")').live('click tap', function(event) {
    if ($(event.target).parentsUntil(this, '#panel').andSelf().length) return;
    console.log("registered a click");
    // fire a function
});

从jQuery.live()文档中可以看到:“不支持链接方法。例如,$(“a”).find(“.offsite.external”).live(…);无效,无法按预期工作”。另外:“从jQuery 1.7开始,.live()方法已被弃用。请使用.on()附加事件处理程序”@frequency I original changed
.live
。on
。然后,我意识到您正在使用jQuery mobile,并取消了更改。不过,过滤的方法还是一样的。工作起来很有魅力!谢谢还有一个问题:parentsUntil是否比closest好?@frequent您无法指定在何处停止匹配。它仅在到达根元素或找到匹配项时停止。通过在选择器处使用
:first
后缀,可以使用
parentsUntil
提前停止。不过,我忘了在我的回答中加上这个。
$('div:jqmData(role="page")').live('click tap', function(event) {
    if ($(event.target).parentsUntil(this, '#panel').andSelf().length) return;
    console.log("registered a click");
    // fire a function
});