JQuery Live возвращают ложные на теги A - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть привязка клика к элементу.Обработчик возвращает false после выполнения, но если элемент оказался тегом A, то ссылка также не отслеживается, что недопустимо ...

$('*').live('click', function(){
  // lots of code here
  return false;
});

Теперь, если элемент, по которому щелкнули, имеетпуть, подобный A>img, и на изображении нажимают, буква A никогда не будет следовать.Я не хочу, чтобы событие click распространялось дальше.

как мне этого добиться?

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

Для моего приложения важно привязать событие к *.Кроме того, клики могут быть сделаны на любом элементе, а не только на.Таким образом, ни одно из упомянутых решений не подходит для того, чего я хочу достичь.

Ответы [ 3 ]

2 голосов
/ 03 ноября 2011

То, что вы ищете, это protectDefault ()

$('*').live('click', function(e){
  // lots of code here
  e.preventDefault();
  return false; // Don't think this is necessary
});

Я также хотел бы сказать, что присоединение события ко всем элементам, вероятно, не является хорошей идеей.

Вы бы лучше обслужили, прикрепив к тегам A специально:

$('a').click(function(e){
    // lots of code here
    e.preventDefault();
    return false;
});
0 голосов
/ 03 ноября 2011

Я бы не привязывал функцию щелчка к *.Вы можете привязать его к элементу body;щелчок будет распространяться от элемента, который был нажат, к элементу body.Вы можете проверить элемент, который был первоначально нажат, так:

$("body").live("click", function (e) {
    if ($(e.originalEvent.target).is("a")) {
        return false;
    }
});

Сказав это, вы все равно можете сделать это:

$("*").live("click", function () {
    if ($(this).is("a") == false) {
        return false;
    }
});
0 голосов
/ 03 ноября 2011

Попробуйте:

if($(this).tagName == 'A')
    return true; // perhaps even { do nothing }
else
    return false;

Возможно, это не точный код для получения тэга, см. Как расширить jQuery, чтобы упростить получение тэгаName .

Также смотрите это: http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

...