JQuery使用.on()而非选择器

dav*_*vid 18 jquery jquery-selectors

我使用.on()函数使用以下语法:

$(".schemaTab").on("click", ".schema", function () {})
Run Code Online (Sandbox Code Playgroud)

而不是.live()因为我.schema动态添加div.那些div有这个代码:

<div class="schema" id="SCH_16">
   <img src="Img/btnRemove.png" class="ikona SCH_Remove" alt="Smazat" title="Smazat">
</div>
Run Code Online (Sandbox Code Playgroud)

但我需要从其父div的click事件中排除img,所以任何想法如何去做?

我试过了:

$(".schemaTab").not(".SCH_Remove").on("click", ".schema", function () {})
Run Code Online (Sandbox Code Playgroud)

...但它不起作用,我不知道如何添加代码.not()内部.on()

Tat*_*nit 21

.not()将不起作用,因为on方法将事件处理程序附加到jQuery对象中当前选定的元素集,并使用原始选择器来测试事件是否应该应用.

所以我认为选择然后过滤你的情况就可以了.

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

你可以试试这个:

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

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

});
Run Code Online (Sandbox Code Playgroud)


Qas*_*sim 7

实际上,您可以将:not选择器与.on方法一起使用,就像这样。

这是一个比Tats_innit的答案过滤结果更干净的解决方案。

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

我正在使用jQuery 1.11.0。