我使用的。对()函数的语法如下:
$(".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()
的代码
。不()不会因为工作on
方法附加事件处理程序到当前选定集jQuery对象元素,并使用原始选择器,以测试该事件是否应适用。
所以我认为选择和过滤,然后在你的情况就可以了。
API: http://api.jquery.com/on/
你可以试试这个:
$(".schemaTab").on("click", ".schema", function (e) {
if (!$(e.target).is(".schemaTab")) {
// not stuff in here
}
});
实际上,你可以使用:not
与选择.on
方法,像这样。
这比过滤每Tats_innit的回答结果的清晰的解决方案。
$('.schemaTab').on('click', '.schema:not(.booga)', function(event) {
// Fun happens here
});
我使用jQuery 1.11.0。
只要确保目标一致:
$('.schemaTab').on('click', '.schema', function(e) {
if(!$(e.target).is('.schema')) {
return;
}
// Do stuff
});
这样做的意义就在于处理上的元素事件尚未在DOM中,其中包括您.sch_Remove。
$(".schemaTab").on("click", ".schema", function () {})
为了防止被点击时,IMG被触发父点击动作,添加以下(除了上面的功能)。
$(".schemaTab").on("click", ".SCH_Remove", function () { return false; })
这将防止传播给家长,其触发的onclick方法的“click”事件,并防止默认点击行为。