跨越Anchor,事件冒泡

dra*_*fly 9 jquery onclick event-bubbling

我有这样一个HTML:

<li class="addToFriends"><a href="....">Something something<span>INSIDE SPAN</span>something</a></li>
Run Code Online (Sandbox Code Playgroud)

要在单击锚点时处理AJAX请求,我在click事件上注册了处理程序:

    $('.addToFriends a').click(function(event){
    var target = $(event.target);
    if (target.is('a')) {
              // if I click on SPAN element following fragment won't execute!


      // do ajax request
    }       
    event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 为什么会为span元素引发click事件?毕竟,我没有将click事件绑定到SPAN元素
  • 除了上一个问题,我认为如果我不处理SPAN点击事件,浏览器将使用事件冒泡来为锚点引发点击事件(如果我不调用event.stopPropagation()).但我也没有为我工作,因为点击事件只提出一次

所以现在,我解决了这个问题,我的解决方案是:

    $('.addToFriends a').click(function(event){
    var target = $(event.target);
    if (!target.is('a')) {
      target = target.parent('a')
    } 
            ...
});
Run Code Online (Sandbox Code Playgroud)

但是,我很好奇为什么它会像这样......

谢谢,

帕维尔

Chr*_*blé 12

您必须使用事件的currentTarget.

$('.addToFriends a').click(function(event){
     event.currentTarget;    
     ...
});
Run Code Online (Sandbox Code Playgroud)