JQuery использует .on() не с селектором
Я использую функцию .on() с этим синтаксисом:
$(".schemaTab").on("click", ".schema", function () {})
вместо .live()
, потому что я добавляю .schema
divs динамически. Эти divs имеют этот код:
<div class="schema" id="SCH_16">
<img src="Img/btnRemove.png" class="ikona SCH_Remove" alt="Smazat" title="Smazat">
</div>
Но мне нужно исключить img из события click из его родительского div, поэтому любая идея, как это сделать?
Я пробовал:
$(".schemaTab").not(".SCH_Remove").on("click", ".schema", function () {})
... но это не сработало, и я не знаю, как добавить .not()
в код .on()
Ответы
Ответ 1
.not() не будет работать, потому что метод on
прикрепляет обработчики событий к выбранному в данный момент набору элементов в объекте jQuery и использует оригинальный селектор, чтобы проверить, должно ли оно применяться.
Итак, я считаю, что выбор, а затем фильтрация в вашем случае сделает трюк.
API: http://api.jquery.com/on/
вы можете попробовать следующее:
$(".schemaTab").on("click", ".schema", function (e) {
if (!$(e.target).is(".schemaTab")) {
// not stuff in here
}
});
Ответ 2
На самом деле вы можете использовать селектор :not
с методом .on
, вот так.
Это более чистое решение, чем фильтрация результатов по ответу Tats_innit.
$('.schemaTab').on('click', '.schema:not(.booga)', function(event) {
// Fun happens here
});
Я использую jQuery 1.11.0.
Ответ 3
Просто убедитесь, что цель соответствует:
$('.schemaTab').on('click', '.schema', function(e) {
if(!$(e.target).is('.schema')) {
return;
}
// Do stuff
});
Ответ 4
Все дело в том, чтобы обрабатывать события на элементах, еще не находящихся в DOM, включая ваш .sch_Remove.
$(".schemaTab").on("click", ".schema", function () {})
Чтобы предотвратить срабатывание родительского действия щелчка при щелчке на нем, добавьте следующее (помимо вашей функции выше).
$(".schemaTab").on("click", ".SCH_Remove", function () { return false; })
Это предотвратит распространение события 'click' родительскому элементу и запуск его метода onclick и предотвращение поведения кликов по умолчанию.