jQuery два разных делегата

0

У меня есть две функции делегата. Но я хочу, чтобы, если щелкнуть img, не нажимайте на <li>.

<li><img src='img.png'/></li>

$('#listview').delegate('li img', 'click', function(){
    alert('img clicked!');
}); 
$('#listview').delegate('li', 'click', function() { 
    window.open("details.php?id" + $(this).attr('id'), '_blank');
}); 

Если щелкнуть изображение (внутри li), я бы хотел НЕ открыть эту страницу. В настоящее время, когда я нажимаю изображение, оно предупреждает плюс показывает новую страницу. Как я могу избежать этого?

  • 1
    «делегат» заменяется на «в» в версиях jQuery выше 1.7
Теги:
delegates

1 ответ

3
Лучший ответ

Попробуйте использовать event.stopImmediatePropagation():

$('#listview').delegate('li img', 'click', function(e){
    e.stopImmediatePropagation();
    alert('img clicked!');
}); 

для предотвращения возникновения события в дереве DOM.

  • 0
    почему бы просто не остановить распространение методом stopPropagation ()? В случае ОП я уверен, что оба будут работать одинаково, но, может быть, я что-то здесь упускаю, так по какой причине?
  • 0
    @ A.Wolff Да, исходя из вопроса текущего ОП, оба метода верны.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню