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

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

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

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

 
Smazat

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

我试过了:

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

…但它不起作用,我不知道如何在.on()代码中添加.on()

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

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

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

你可以试试这个:

 $(".schemaTab").on("click", ".schema", function (e) { if (!$(e.target).is(".schemaTab")) { // not stuff in here } }); 

只需确保目标匹配:

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

我刚遇到这个问题并使用了:not selector,就像这样:

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

我正在使用jQuery 1.11.0,我不知道这有多远。

这样做的关键是处理DOM中尚未包含的元素的事件,其中包括.sch_Remove。

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

为了防止在单击img时触发父点击操作,请添加以下内容(除了上面的函数)。

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

这将阻止“click”事件传播到父级并触发其onclick方法并阻止默认的单击行为。