Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2015, 17:45
Новичок на форуме
Отправить личное сообщение для Djiney Посмотреть профиль Найти все сообщения от Djiney
 
Регистрация: 19.01.2015
Сообщений: 3

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

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

Имеется "пирамида" из вложенных элементов (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. Каким-то чудом приостановить выполнение автоматического "прокликивания".

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

Спасибо за внимание!
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2015, 18:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Djiney
способа остановить "прокликивание пирамиды" кроме как строкой "return false;" я не нашёл
Это называется "всплытие события". Остановить его можно вызовом функции с говорящим именем: e.stopPropagation()
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2015, 18:16
Новичок на форуме
Отправить личное сообщение для Djiney Посмотреть профиль Найти все сообщения от Djiney
 
Регистрация: 19.01.2015
Сообщений: 3

Действительно, не знал, спасибо. Однако, решить задачу правильный вариант остановки не помог)
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2015, 18:20
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

$(this).parent().trigger(e)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 19.01.2015, 19:36
Новичок на форуме
Отправить личное сообщение для Djiney Посмотреть профиль Найти все сообщения от Djiney
 
Регистрация: 19.01.2015
Сообщений: 3

Да, оно, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка событий добавленных элементов Dozentos jQuery 4 26.09.2015 14:10
Обработка события внутри события grifangel Общие вопросы Javascript 6 04.09.2014 12:34
Запрет события Click на дочернем элементе, кот. находится за рамками родителя Smokvin Events/DOM/Window 11 10.11.2013 01:53
Обработка события элемента внутри создавшего его объекта pauluss Общие вопросы Javascript 10 10.09.2010 17:01
Повесить событие click (jQuery) на весь документ, кроме нескольких элементов dabutch Events/DOM/Window 2 12.11.2009 19:52