我试图阻止A HREF实际打开链接,但是要执行脚本。我让脚本部分工作,但似乎Firefox会忽略它:
$("#permalink a").click(function(id){
$("#newPost").fadeToggle;
event.preventDefault();
var id = this.getAttribute('href');
$("#newPostContent").load(id);
$("#newPost").show("fast");
});
有人可以建议使用跨浏览器脚本来防止默认设置吗?
答案 0 :(得分:29)
此标准解决方案是return false
处理程序中的click()
。 return false
相当于在活动中调用preventDefault()
和stopPropagation()
。 preventDefault()
也适用于此任务,因此它或return false
都可以正常工作。
您的问题似乎是语法错误和错误命名的参数。我明白了:
fadeToggle
没有括号; id
,但您调用event.preventDefault()
;和load()
链接在一起。所以这应该有效:
$("#permalink a").click(function(event) {
$("#newPost").fadeToggle();
var id = this.getAttribute('href');
$("#newPostContent").load(id);
$("#newPost").show("fast");
return false;
});
在此实例中,您可以使用return false
自由替换event.preventDefault()
,但传播的click()
事件可能会或可能会导致其他问题,具体取决于您拥有的其他事件处理程序。
答案 1 :(得分:20)
这始终有效: Firefox需要“事件处理程序”,而Chrome则不需要。所以这适用于所有浏览器:
$('#id_obj').click(function(event) {
event.preventDefault(event);
}
答案 2 :(得分:14)
$("#permalink a").click(function(id){
应该是
$("#permalink a").click(function(event){
然后
var id=event.target;
将为您提供正在处理的对象,event.preventDefault()将停止默认操作。
通常我会返回false;我自己,但这都会阻止默认操作和停止事件的传播,这可能会产生您对其他事件处理程序没有预期的影响。
答案 3 :(得分:-1)
你应该能够return false;