Как прикрепить обратный вызов onclick к div, но не к ссылке внутри div? - PullRequest
5 голосов
/ 22 июля 2011

HTML

<div class='item_container'>

[...bunch of links and pictures...]
<a class='item_owner'>John Doe</a>

</div>

Javascript

/**
    Bind the onclick only if you hover on the item since we got a lot
    of items and several events and plugins to setup on them.
*/
$('.item_container').live('mouseenter', function(e){
  $this = $(this);
  if (!$this.data('isSetup')) {
    $this.click(function(e){
      // do magic
      return false;
    });
     [... a lot of other stuff]
    $this.data({'isSetup': true});
  }
});

Конечно, когда я нажимаю в любом месте в div, он выполняет «делать магию».Благодаря return false, если я нажимаю на любую ссылку в div, она все равно выполняет «делать магию» и не меняет страницу, что является ожидаемым поведением.

Но есть одна ссылка, котораяПредположим, на самом деле изменить страницу, владелец ссылкиПроблема в том, что с моим текущим настроением я не даю ему работать.

1 Ответ

4 голосов
/ 22 июля 2011

Необходимо прекратить распространение события по ссылкам на родителя .item_container.

Добавить этот блок к коду:

$('.item_container a.item_owner').live('click', function(e){
 e.stopPropagation();
});
...