Javascript e、 防止默认值不执行

Javascript e、 防止默认值不执行,javascript,jquery,Javascript,Jquery,在以下代码中,e.preventdefault();不工作,浏览器正在访问锚href。我可以看到第一个警报,但在那之后,浏览器会跟随锚的href链接。我读过这个(类似的)关于Stackoverflow的问题,但它并没有真正帮助我: 有没有关于我做错了什么或如何修复的想法?提前谢谢 $('body').delegate('a.newslink', 'click', function(e) { alert('start'); e.preventDefault(); $.get

在以下代码中,e.preventdefault();不工作,浏览器正在访问锚href。我可以看到第一个警报,但在那之后,浏览器会跟随锚的href链接。我读过这个(类似的)关于Stackoverflow的问题,但它并没有真正帮助我:

有没有关于我做错了什么或如何修复的想法?提前谢谢

$('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);
    });
}); 

试着让默认呼叫成为你做的第一件事。警报可能会妨碍您

此外,由于这是一个委托事件,您可能还需要调用e.stopPropagation


最后,在这种情况下我不是100%确定,但事件可能不可取消(请检查e.cancelable的值)。请参见

您是否尝试删除警报?警报不适合调试。您是否尝试过使用e.stopPropagation()?是否确实按照您的想法绑定了警报?当我尝试快速执行JSFIDLE Prevent时,默认设置可以正常工作。正在工作的JSFIDLE:警报已被删除,但它也可以与它们一起工作。@khez,是的,已尝试删除警报,我知道这不合适,但在这种特殊情况下使用console.log不起作用,因为在我打开控制台之前,浏览器正在跟踪链接;也没有执行。gareth是对的,因为它也使用了stopPropagation,所以在函数的末尾我必须使用return false。好了,各位请不要着急!稍后在脚本中,在同一个类上还有一些javascript操作。很抱歉浪费了你的时间!我去度假了,刚回来,我们和两个开发人员一起做这件事,我想这样的事情可能会发生。我的缺点是没有仔细检查。另一方面,你的回答让我走上了正确的轨道(@justktk@Chris houts)。再次表示歉意和感谢