在SPAN元素上禁用设置属性不会阻止单击事件

Pet*_*kov 33 html jquery javascript-events

我有一个<span>元素可以在click事件上执行某些操作.

当我禁用它时,使用jQuery:

$("span").attr("disabled", true);
Run Code Online (Sandbox Code Playgroud)

单击span元素时,将继续调用事件处理程序.

我在Chrome 13中测试.有什么想法吗?

Dav*_*ino 66

试试这个:

$("span").css("pointer-events", "none");
Run Code Online (Sandbox Code Playgroud)

你可以启用那些

$("span").css("pointer-events", "auto");
Run Code Online (Sandbox Code Playgroud)

  • 这个答案可以通过简单地使用css扩展到全局工作:`span [disabled] {pointer-events:none; }`.这样您就不必担心将指针事件重置为auto. (6认同)
  • 或者你可以使用类似`.clicks-disabled {pointer-events:none}`这样的类.现在,您可以在需要时轻松添加或删除此类,而不是将CSS与JS混合. (3认同)
  • 不幸的是,在创建禁用按钮/提交的效果时,`pointer-events:none` 不允许为用户分配正确的光标,`cursor: not-allowed`。 (2认同)

You*_*You 10

disabled属性不是全局的,只允许在表单控件上使用.您可以做的是设置自定义数据属性(可能data-disabled)并在处理click事件时检查该属性.


Jus*_*ᚄᚒᚔ 7

disabled属性的标准行为仅适用于表单元素.尝试取消绑定事件:

$("span").unbind("click");
Run Code Online (Sandbox Code Playgroud)


Raf*_*fay 7

尝试取消绑定事件.

$("span").click(function(){
alert($(this).text());
    $("span").not($(this)).unbind('click');
});
Run Code Online (Sandbox Code Playgroud)

这是小提琴