Tom*_*ash 19 javascript jquery cross-browser
我试图阻止A HREF实际打开链接,但是要执行脚本.我让脚本部分工作,但似乎Firefox会忽略这个:
$("#permalink a").click(function(id){
$("#newPost").fadeToggle;
event.preventDefault();
var id = this.getAttribute('href');
$("#newPostContent").load(id);
$("#newPost").show("fast");
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议跨浏览器脚本来防止默认设置?
cle*_*tus 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;
});
Run Code Online (Sandbox Code Playgroud)
您可以在此实例中自由替换return false
,event.preventDefault()
但传播click()
事件可能会或可能会导致其他问题,具体取决于您拥有的其他事件处理程序.
小智 20
这总是有效的:Firefox需要"事件处理程序",而Chrome则不需要.所以这适用于所有浏览器:
$('#id_obj').click(function(event) {
event.preventDefault(event);
}
Run Code Online (Sandbox Code Playgroud)
ijw*_*ijw 14
$("#permalink a").click(function(id){
Run Code Online (Sandbox Code Playgroud)
应该
$("#permalink a").click(function(event){
Run Code Online (Sandbox Code Playgroud)
然后
var id=event.target;
Run Code Online (Sandbox Code Playgroud)
将为您提供正在处理的对象,event.preventDefault()将停止默认操作.
通常我会返回false; 我自己,但这都会阻止默认操作并停止事件的传播,这可能会产生您对其他事件处理程序没有预料到的影响.
归档时间: |
|
查看次数: |
43331 次 |
最近记录: |