e.preventdefault(); 不工作

Gar*_*ary 28 sharepoint jquery

e.preventDefault();上班真的很麻烦.

这是我的代码

$('#ListSnapshot a').live('click', function(e){
    var url = $(this).attr('href') +' #WebPartWPQ2 .ms-listviewtable';
    $('#ListSnapshot').load(url);
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

有人可以解释我做错了什么,我可以看到加载功能工作,但然后页面重定向到我需要阻止的点击链接.

我也试过移动e.preventDefault();到功能的顶部,无济于事.

小智 27

我有一个类似的问题,在e.preventDefault()某些情况下,但在其他情况下不会.它没有显示任何错误,并且使用try-catch时没有显示错误catch alert.添加e.stopImmediatePropagation()诀窍,万一它可以帮助任何人(非常感谢wcpro)

  • 谢谢,效果很好。这应该标记为答案。 (3认同)

Rod*_*son 8

我想你可能有以下场景...至少,这将重现错误

你可能有一个事件更高的事件设置为悬停事件,该事件可能正在使用绑定,即使你调用e.preventdefault它仍然会先调用绑定,所以你可能需要让一个更高的使用直播而不是绑定.然后它应该按预期工作.检查这个样本.

http://jsfiddle.net/rodmjay/mnkq3/

$('div').bind ('click', function(){ // <-- switch this to live and you will see different behavior

    alert('div click');

});

$('a').live('click', function(e){


    alert('a click');

    e.stopImmediatePropagation();


});
Run Code Online (Sandbox Code Playgroud)


Dav*_*und 6

您提供的代码肯定应该正常工作(工作示例).你的代码还有另一个问题.

试着将警报事件处理程序中,以确保它激发所有.你可能#ListSnapshot a没有找到任何东西.

如果处理程序中存在其他错误,则会导致异常,这可能会阻止javascript一直执行到preventDefault调用.我不知道你提供的代码中可能有什么.

  • 我想这可能就是答案.`try..catch`应该有所帮助. (2认同)

Tej*_*eni 3

尝试返回falselive并不总是以同样的方式工作bind。检查 jquery文档

  • 谢谢,恐怕我已经尝试过了,但仍然没有运气。再次感谢加里 (2认同)