Javascript 防止在jQuery one()函数上单击跳转

Javascript 防止在jQuery one()函数上单击跳转,javascript,jquery,clickonce,preventdefault,Javascript,Jquery,Clickonce,Preventdefault,我正在使用jQuery中的函数来防止多次单击。但是,当他们第二次单击该元素时,它会执行恼人的单击跳转并将您发送回页面顶部 有没有办法防止这种情况发生?取消绑定单击并在函数完成时重新绑定它具有相同的结果(我假设one()只是取消绑定事件) 发生这种情况的一个简单示例:尝试更改href,使“#”不被使用: 问题是,在侦听器解除绑定后,没有任何东西可以阻止浏览器接受链接(它将其视为锚定标记)并尝试访问它。(在这种情况下,这将直接导致页面顶部。您可以使用标准功能和一些逻辑: 1. $('.someLin

我正在使用jQuery中的函数来防止多次单击。但是,当他们第二次单击该元素时,它会执行恼人的单击跳转并将您发送回页面顶部

有没有办法防止这种情况发生?取消绑定单击并在函数完成时重新绑定它具有相同的结果(我假设
one()
只是取消绑定事件)


发生这种情况的一个简单示例:

尝试更改href,使“#”不被使用:


问题是,在侦听器解除绑定后,没有任何东西可以阻止浏览器接受链接(它将其视为锚定标记)并尝试访问它。(在这种情况下,这将直接导致页面顶部。

您可以使用标准功能和一些逻辑:

1. $('.someLink').click(function(event) {
2.     event.preventDefault();
3.     if (!$(this).hasClass("clicked"))
4.         alert('This will be displayed only once.');
5.         $(this).addClass("clicked");
   });
  • 听任何有关类
    someLink
    的内容
  • 停止浏览器正常工作。
  • 检查对象是否单击了类
    注意这可能是您想要的任何名称
  • 它没有这样做。
  • 添加类
    clicked
    ,以便下次单击时,它将忽略您的代码

  • 查看演示

    我不确定这是否更好,但是您可以绑定一个简单的函数来维护
    返回false

    $('.someLink').one('click', function() {
        $(this).bind('click',false);
        return false;
    });
    
    jQuery通过
    .bind('click',false)
    提供了一个快捷方式

    或者,如果您有几个这样的链接,一个非常有效的替代方法是使用该方法将处理程序绑定到一个共同的祖先,该祖先负责为您处理
    返回false;

    这里我只使用了
    主体
    ,但您可以使用更接近的祖先

    $('.someLink').one('click', function() {
    });
    
    $('body').delegate('.someLink','click',function(){return false;});
    

    制作href=“javascript:;”通常对我有用。不过,我不确定是否有任何副作用。+1谢谢McHerbie,不过我现在想避开内联javascript
    $('.someLink').one('click', function() {
    });
    
    $('body').delegate('.someLink','click',function(){return false;});