Вход

Просмотр полной версии : Обработка click-события по группе элементов


Djiney
19.01.2015, 17:45
Здравствуйте.

Занимаюсь разработкой небольшого плагина, возникла следующая ситуация:

Имеется "пирамида" из вложенных элементов (div, span и т.д.), каждому из которых назначен click-обработчик, т.е., грубо говоря:

HTML:

<div>
<div>
<span>
что-нибудь
</span>
</div>
</div>

JS:

$('*').click(function(e){
// Функция
}

При клике на самый верхний элемент вызываются click-события для всех элементов, находящихся ниже, по очереди, если в вызываемой функции не окажется строчки "return false;".

Итак, задача: мне нужно сделать аналог следующей конструкции:
$('*').click(function(e){
if (confirm("???")) {
return false;
}
});

НО без использования самого confirm'а.

Если его не использовать, то способа остановить "прокликивание пирамиды" кроме как строкой "return false;" я не нашёл. Таким образом, после обработки клика по верхнему элементу, нужно использовать "return false;", а затем, при необходимости, продолжить "прокликивание" до победного конца.

На данный момент у меня 2 варианта:
1. Запоминать координату клика, а так же элемент, на который кликнули, а затем имитировать клик и перебирать по очереди элементы.
2. Каким-то чудом приостановить выполнение автоматического "прокликивания".

Вопрос, как это лучше реализовать?

Спасибо за внимание!

danik.js
19.01.2015, 18:06
способа остановить "прокликивание пирамиды" кроме как строкой "return false;" я не нашёл
Это называется "всплытие события". Остановить его можно вызовом функции с говорящим именем: e.stopPropagation()

Djiney
19.01.2015, 18:16
Действительно, не знал, спасибо. Однако, решить задачу правильный вариант остановки не помог)

danik.js
19.01.2015, 18:20
$(this).parent().trigger(e)

Djiney
19.01.2015, 19:36
Да, оно, спасибо!