div <a> child element</a>上的event stopPropagation

时间:2015-03-26 08:07:17

标签: jquery javascript-events event-handling

事件停止传播不适用于我的以下代码

<div id="notif_msg" class="messages" style="display: block;">
<a href="/fotos.php?pag=galeria&amp;view=315" class="message" id="2788">
    <span id="2788" style="color:white;">TRY</span>
</a>

然后我用这个jquery来停止它的事件

$( '#notif_msg a.message' ).live("click",function( event ) {
       event.stopPropagation();
    });

我疯狂的猜测是我点击我的span元素而不是a元素。我正在使用直播活动因为我附加了一些其他元素。

请帮忙。

UPDATE ----这是我动态加载通知的ajax

function loadnotif(myid){

    $.ajax({
            type: "POST",
            url: "fragmentos/ajax/loadnotif.php",
            data:{"myid":myid},
            dataType: 'json',
            cache: false,
            success: function(html)
            {  
                $('#notif_msg').append(html.data);
                if(html.newnot == 1){
                    $('#noti-container').removeClass('noticon');
                    $('#noti-container').addClass('noticon-active');
                }                     
            }                   
      });
}

1 个答案:

答案 0 :(得分:1)

问题是你正在使用事件分区,而live()会将处理程序附加到文档对象,这意味着事件已经到达树的顶部,并且没有其他传播

如果要停止传播,则需要将处理程序直接绑定到元素

$('#notif_msg a.message').click(function (event) {
    event.stopPropagation();
});

注意:你应该使用jQuery&lt; 1.9 live工作,所以我假设你正在使用jQuery&lt; 1.9。但是,如果您使用.on()进行事件委派

,则适用相同的原则