0

当我单击子链接时,我想停止父事件触发。这是我的代码:

$('.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}/mails页面。我想阻止它改变页面。

4

2 回答 2

1

.toogleRead您也应该通过 jQuery在元素上添加事件处理程序。更容易记住处理程序的附加位置,它不会混合两种方式,并在 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/ .

于 2012-05-09T13:02:13.713 回答
0

你能把 clent 事件放在上面a吗?现在您不必担心事件传播。

$('.list_row_input_type.unread a.toggleRead').click(function(e) {
  e.preventDefault();
  toggleRead();
});
于 2012-05-09T12:56:40.543 回答