Как работает функция click () в jquery при работе с несколькими сложенными div?

У меня есть один основной div и другой div внутри основного div, когда я нажимаю на div внутри, он также считается щелчком по основному div, но я не хочу этого, я хочу, чтобы он рассматривал только щелчок по внутреннему div .

<div id="main"><div id="inner"></div></div>

Допустим, основной div намного больше, а внутренний div - это просто маленький квадрат, когда я нажимаю на внутренний div (маленький квадрат), я не хочу, чтобы он запускал какие-либо действия, как если бы я должен был щелкнуть по основному div. Как мне этим маневрировать? Еще раз спасибо!

3
anthonypliu 1 Июл 2010 в 04:37

2 ответа

Лучший ответ

События всплывают от того, по которому щелкнули, через всех его предков. У любого предка, который обрабатывает это событие, будет запущен обработчик.

Что вам нужно сделать, так это вызвать event.stopPropagation(), чтобы предотвратить всплытие события до его элементов-предков.

$('#inner').click(function(evt) {
    evt.stopPropagation();
    // your code
});

Другой альтернативой является return false; в конце вашего обработчика.

$('#inner').click(function(evt) {
    // your code
    return false;
});

Вы можете проверить это здесь: http://jsfiddle.net/ZpeYr/

5
user113716 1 Июл 2010 в 00:45
$('#inner').click(function() {  
  alert('clicked inner div'); // do something
});

Вы можете вызвать свой внутренний div, используя идентификатор css.

0
Honshi 1 Июл 2010 в 00:42