div <a> 子元素上的事件停止传播
event stopPropagation on div <a> child element
事件停止传播不适用于我的以下代码
<div id="notif_msg" class="messages" style="display: block;">
<a href="/fotos.php?pag=galeria&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 元素。我正在使用实时事件,因为我附加了一些其他元素。
请帮忙。
更新----这是我的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');
}
}
});
}
问题是您正在使用事件委托,live()
会将处理程序附加到文档对象,这意味着事件已经到达树的顶部并且没有更多的传播
如果要停止传播,需要将处理程序直接绑定到元素
$('#notif_msg a.message').click(function (event) {
event.stopPropagation();
});
注意:您应该使用 jQuery < 1.9 才能使 live
正常工作,因此我假设您使用的是 jQuery < 1.9。但是,如果您使用 .on()
进行事件委托
,同样的原则也适用
事件停止传播不适用于我的以下代码
<div id="notif_msg" class="messages" style="display: block;">
<a href="/fotos.php?pag=galeria&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 元素。我正在使用实时事件,因为我附加了一些其他元素。
请帮忙。
更新----这是我的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');
}
}
});
}
问题是您正在使用事件委托,live()
会将处理程序附加到文档对象,这意味着事件已经到达树的顶部并且没有更多的传播
如果要停止传播,需要将处理程序直接绑定到元素
$('#notif_msg a.message').click(function (event) {
event.stopPropagation();
});
注意:您应该使用 jQuery < 1.9 才能使 live
正常工作,因此我假设您使用的是 jQuery < 1.9。但是,如果您使用 .on()
进行事件委托