отмените событие onclick для 'a' внутри div с событием onclick - PullRequest
2 голосов
/ 14 апреля 2011

HTML:

<div id="container">
<div class="desc">desc</div>
<a href="foo.php">foo</a>
</div>

ЯШ:

$('#container').click(function(){
    ...
    my_function();
    ...
});

Это работает, когда пользователь щелкает внутри контейнера, за исключением тега.

Если пользователь щелкает тег, происходит событие щелчка. Однако я хочу отключить функцию самоопределения кликов для тега. То есть ссылка на страницу без события onlick.

Это не работает:

$('#container :not(a)').click();

Ответы [ 3 ]

6 голосов
/ 14 апреля 2011

Звучит так, как будто вы хотите предотвратить событие щелчка по умолчанию для A срабатывания тегов - используйте:

$('#container a').click(function(e) {
  e.preventDefault();
});

Редактировать

Чтобы предотвратить запуск вашего событияесли пользователь нажимает на ссылку:

$('#container').click(function(e) {
  if(e.target.tagName !== 'A') {
    my_function();
  }
});
6 голосов
/ 14 апреля 2011

Проверьте, происходит ли событие из тега a, например

$('#container').click(function(e){
    if ($(e.target).is('a')) return;
    ...
    my_function();
    ...
});
0 голосов
/ 06 июня 2012

Прикрепите обработчик события click к вашим ссылкам, чтобы сообщить им прекратить всплывающее событие после того, как их собственный обработчик выполнится:

$("#container a").click(function(e) {
   e.stopPropagation();
})

Другие решения не будут работать с гиперссылками с использованием изображений в качестве якоря,(target = object HTMLImageElement & tagName = DIV)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...