在 Opera 中禁用元素的双击事件

发布于 2024-12-01 16:23:31 字数 180 浏览 3 评论 0原文

有没有办法禁用(使用 CSS、JS 或 jQuery)双击给定元素?

Opera 的问题是,当我过快地单击某个元素时,它会显示一个菜单。请注意,我知道如何为我禁用此功能。我希望能够为所有使用该脚本的用户禁用此功能。

有问题的按钮是“下一个”/“上一个”按钮,我为它们使用输入类型图像,但“a”也会发生同样的情况。

Is there a way to disable (with CSS, JS or jQuery) double-click for a given element?

The problem with Opera is that it displays a menu when I click on an element too fast. Note that I know how to disable this for me. I'd like to be able to disable this for all user that use the script.

The buttons in question are "next"/"previous" buttons and I use input type image for them, but the same happens with "a".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

结果我需要这个:

/**
    Disable text selection by Chris Barr, of chris-barr.com
*/
$.fn.disableTextSelect = function() {
    return this.each(function(){
        if($.browser.mozilla){//Firefox
            $(this).css('MozUserSelect','none');
        }else if($.browser.msie){//IE
            $(this).bind('selectstart',function(){return false;});
        }else{//Opera, etc.
            $(this).mousedown(function(){return false;});
        }
    });
}

然后我可以像这样禁用按钮元素上的文本选择:

$(function(){ $('input[type=image]').disableTextSelect(); });

现在我可以快速单击按钮,一切正常:-)。

It turended out I need this:

/**
    Disable text selection by Chris Barr, of chris-barr.com
*/
$.fn.disableTextSelect = function() {
    return this.each(function(){
        if($.browser.mozilla){//Firefox
            $(this).css('MozUserSelect','none');
        }else if($.browser.msie){//IE
            $(this).bind('selectstart',function(){return false;});
        }else{//Opera, etc.
            $(this).mousedown(function(){return false;});
        }
    });
}

And then I could disable text selection on my button elements like this:

$(function(){ $('input[type=image]').disableTextSelect(); });

And now I can click buttons fast as hell and all works fine :-).

宛菡 2024-12-08 16:23:31

您不能将 clickdblclick 事件处理程序附加到同一元素上,因为当您 dblclick 时,这两个事件都会被触发。为了使其发挥作用,几乎没有什么解决办法。

这可能会帮助您

需要检测到双击事件时取消单击/鼠标事件

查看您的问题,有一个简单的解决方案。在单击事件处理程序中,单击后设置禁用属性或某些类名称(禁用)。在执行代码之前,在处理程序中检查此属性或类名。如果存在,则不要执行任何操作。一段时间后删除此属性或类名。试试这个

$("selector").click(function(){
   var $this = $(this);
   if(!$this.hasClass("disabled")){


       //Do you stuff here


       $this.addClass("disabled");

       setTimeout(function(){
         $this.removeClass("disabled");
       }, 200);  

   }
});

You cannot have a click and dblclick event handler attached on the same element because when you dblclick both the events are going to be triggered. In order to make it work there are few work arounds.

This might help you

Need to cancel click/mouseup events when double-click event detected

Looking at your problem there is a simple solution. In the click event handler once it is clicked set a disabled attribute or some class name(disabled). In the handler before exectuing your code checck for this attribute or class name. If it exists then dont do anything. After sometime remove this attribtue or class name. Try this

$("selector").click(function(){
   var $this = $(this);
   if(!$this.hasClass("disabled")){


       //Do you stuff here


       $this.addClass("disabled");

       setTimeout(function(){
         $this.removeClass("disabled");
       }, 200);  

   }
});
长亭外,古道边 2024-12-08 16:23:31

JavaScript 会为你做到这一点。

DOMElement.ondblclick = (function () {return false;})();

JavaScript would do that for you.

DOMElement.ondblclick = (function () {return false;})();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文