2012-05-09 72 views
0

你好我想停止父事件,当我点击子链接时触发。这里是我的代码:阻止父事件jquery

$('.list_row_inputtype').on('click',function(event) { 

    $(this).find('a.link_to_fire').click(); 
    event.stopPropagation(); 

    return false; 
}); 


<div class="list_row_input_type unread"> 
    <a href="#" onclick="toogleRead(); return false;" class="toogleRead"></a> 
    <a href="{corePath}/mails" class="link_to_fire">{emailLink}</a> 
    <div class="description"></div> 
</div> 

当我点击“.toogleRead”它火的功能,但更改为{} corePath /邮件页面。我想阻止它改变页面。

回答

0

您能否将clent事件放置在a上?现在您不必担心事件传播。

$('.list_row_input_type.unread a.toggleRead').click(function(e) { 
    e.preventDefault(); 
    toggleRead(); 
}); 
1

您应该通过jQuery在.toogleRead元素上添加事件处理函数。记住处理程序的连接方式比较容易,它不会混合两种操作方式,并在HTML和Javascript之间添加更好的分隔。

这是一个工作演示http://jsfiddle.net/pomeh/uFV9R/

HTML代码

<div class="list_row_input_type unread"> 
    <a href="#" class="toogleRead"></a> 
    <a href="{corePath}/mails" class="link_to_fire">{emailLink}</a> 
    <div class="description"></div> 
</div> 

Javascript代码

$('.list_row_input_type').on('click',function(event) { 
    event.stopPropagation(); 
    // your stuff 
}); 

$('a.toogleRead').on('click',function(event) { 
    event.stopPropagation(); 
}); 

还有一点,从jQuery的事件处理程序返回false时,在大多数情况下,被认为是不好的做法。你通常只想做其中的一件事,这样做太多了。这里有两个链接详细解释了http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/http://css-tricks.com/return-false-and-prevent-default/