JQuery的使用。对()与未选择(JQuery use .on() with not select

2019-06-26 01:29发布

我使用的。对()函数的语法如下:

$(".schemaTab").on("click", ".schema", function () {})

而不是.live()因为我加入.schema动态的div。 这些div有这样的代码:

<div class="schema" id="SCH_16">
   <img src="Img/btnRemove.png" class="ikona SCH_Remove" alt="Smazat" title="Smazat">
</div>

但我需要排除从其父DIV的click事件的IMG,所以任何想法怎么办呢?

我试过了:

$(".schemaTab").not(".SCH_Remove").on("click", ".schema", function () {})

......但它没有工作,我不知道如何添加的.not()里面.on()的代码

Answer 1:

。不()不会因为工作on方法附加事件处理程序到当前选定集jQuery对象元素,并使用原始选择器,以测试该事件是否应适用。

所以我认为选择和过滤,然后在你的情况就可以了。

API: http://api.jquery.com/on/

你可以试试这个:

$(".schemaTab").on("click", ".schema", function (e) {

    if (!$(e.target).is(".schemaTab")) {
         // not stuff in here
    }

});


Answer 2:

实际上,你可以使用:not与选择.on方法,像这样。

这比过滤每Tats_innit的回答结果的清晰的解决方案。

$('.schemaTab').on('click', '.schema:not(.booga)', function(event) {
  // Fun happens here
});

我使用jQuery 1.11.0。



Answer 3:

只要确保目标一致:

$('.schemaTab').on('click', '.schema', function(e) {
    if(!$(e.target).is('.schema')) {
        return;
    }

    // Do stuff
});


Answer 4:

这样做的意义就在于处理上的元素事件尚未在DOM中,其中包括您.sch_Remove。

$(".schemaTab").on("click", ".schema", function () {})

为了防止被点击时,IMG被触发父点击动作,添加以下(除了上面的功能)。

$(".schemaTab").on("click", ".SCH_Remove", function () { return false; })

这将防止传播给家长,其触发的onclick方法的“click”事件,并防止默认点击行为。



文章来源: JQuery use .on() with not selector