событие jquery click - - PullRequest
       22

событие jquery click -

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

Я хочу выполнить действие, когда пользователь нажимает на элемент div.Однако, если он нажимает на ссылку в div, я хочу отправить его прямо на ссылку.Теперь href игнорируется.

<div id=myDiv>

   some text
   <a href="link1">my link</a>

   some text
   <a href="link2">my link</a>

   some text
   <a href="link3">my link</a>
<div>


$('.myDiv').live('click', function() {          
        console.log($(this));
        // if clicked on link, the go directly to the link
        ....
        // if clicked elsewhere on div, then perform another another action and return false
        return false;

    }); 

====== МОЕ РЕШЕНИЕ ====

Мне понравилось решение Роба, но синтаксис был немного неприятным, поэтому RTFM и пришелс чем-то похожим, что работает для меня.

$('.myDiv').live('click', function(event) {         
   var $target = $(event.target);
   if( $target.is("a") ) {
    return true;
    }
    else{
      // do something else
      return false;
    }
}); 

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Звоните stopPropagation() при переходе по ссылкам:

$('.myDiv').live('click', function(e) {
    // Perform your action here
});

$('.myDiv a').live('click', function(e) {
    e.stopPropagation();
});
1 голос
/ 06 ноября 2011

Проверьте свойство event.target. Приведенный ниже код не выполняется return false при нажатии на ссылку.

$('.myDiv').live('click', function(event) {
    ....
    // `return false` only if element != <a>
    if(!$.nodeName(event.target, "a")) return false;

}); 
...