Предотвратить событие клика от воздействия на родительский jquery - PullRequest
4 голосов
/ 08 октября 2011

Я должен был остановить распространение события от дочернего к родительскому, у меня есть набор li тегов, содержащих a.

$('li a[rel=close]').live('click', function(e){
    e.stopPropagation();
    e.preventDefault();
})

Но это не останавливает событие. Есть предложения?

Ответы [ 3 ]

2 голосов
/ 08 октября 2011

stopPropagation имеет проблемы с live, из jQuery stopPropagation docs -

Поскольку метод .live () обрабатывает события после их распространения на вершинудокумента невозможно остановить распространение живых событий

Как сказал Роб У., ваш код будет хорошо работать с bind, вот демо - http://jsfiddle.net/TmKyT/

1 голос
/ 08 октября 2011

Используйте .bind вместо .live. Событие live запускается в конце дерева распространения. live только более полезно, чем bind, если вы также хотите связать прослушиватель событий для элементов, которые создаются позже.

0 голосов
/ 08 октября 2011

Может быть, попробовать использовать делегат?

$('ul.parent').delegate('li a[rel=close]', 'click', function( event ) {

}
...