Как сделать так, чтобы событие щелчка запускалось ТОЛЬКО на родительском DIV, а не на дочерних?

У меня есть DIV с классом foobar и несколько DIV внутри этого DIV, которые не относятся к классу, но я полагаю, что они наследуют класс foobar :

$('.foobar').on('click', function() { /*...do stuff...*/ });

Я хочу, чтобы это срабатывало только при нажатии где-нибудь в DIV, но не на его дочерних DIV.

188
задан Saurav Rastogi 6 December 2016 в 06:49
поделиться

1 ответ

Если вы не можете использовать pointer-events: none; и ориентируетесь на современные браузеры, вы можете использовать composedPath для обнаружения прямого щелчка по объекту, например, так:

element.addEventListener("click", function (ev) {
    if (ev.composedPath()[0] === this) {
        // your code here ...
    }
})

Вы можете узнать больше о compedath здесь : https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath

0
ответ дан 23 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: