e.preventDefault没有执行

时间:2011-04-15 13:01:49

标签: javascript jquery

在以下代码中e.preventdefault();无法正常工作,浏览器正在访问锚点href。我可以看到第一个警报,但之后浏览器会跟踪锚点的href链接。我已经在Stackoverflow上阅读了这个(类似的)问题,但它并没有真正帮助我:e.preventdefault(); not working

关于我做错了什么或如何解决它的任何想法?提前谢谢。

$('body').delegate('a.newslink', 'click', function(e) {
    alert('start');
    e.preventDefault();
    $.get( $(this).attr('href'), function(data) {
        alert(data);
        $('.reader').replaceWith(data); 
        $('#article-menu').removeClass('open');
        $('#article-menu').addClass('closed');
        $('#newslist').animate({height:'0px'}, 200);
    });
}); 

1 个答案:

答案 0 :(得分:2)

尝试首先执行preventDefault调用。警报可能会妨碍。

另外,因为这是一个委托事件,您可能还需要调用e.stopPropagation。

最后,在这种情况下我不是100%确定,但事件可能无法取消(检查e.cancelable的值)。见https://developer.mozilla.org/en/DOM/event.preventDefault