3

是否可以使用 jQuery 禁用 div 元素。我有一个点击事件,里面有一个单选按钮。这样就有了更大的可点击区域。因此用户可以单击单选按钮或 div 元素本身。

我有很多这样的元素。我只希望用户在页面刷新时一次单击一个按钮。在这段时间内,用户可以单击其他按钮并混淆脚本,不返回任何内容或在重新加载时使页面变为空白。这就是为什么我需要禁用 div 元素。我知道可以禁用输入和表单元素。这就是为什么很容易解决单选按钮本身的问题。

我努力了:

   $('#element').unbind('click');
   $('#element').click(function(e) { e.preventDefault; }
   $('#element').click(function() { return false; }   

和其他各种各样的事情。

有人有更好的想法吗?

4

2 回答 2

8

1.叠加法

使用覆盖元素覆盖内容,例如 HTML:

<div id="element">
    <div class="overlay"></div>
    Whatever content is underneath.
</div>

使用以下 CSS:

#element {position:relative}
.overlay {bottom:0; left:0; position:absolute; right:0; top:0}

(可选)添加半透明背景以.overlay使元素明显不接受用户输入。

请参阅此 JSFiddle


2.禁用输入元素

如果您只是想禁用输入标签,请添加以下disabled属性:

<input type="checkbox" disabled />

3. CSS:指针事件

通过设置禁用通过 CSS 的点击pointer-events:none。浏览器支持有限!请参阅caniuse.com/pointer-events。CSS 代码:

#element {pointer-events:none}

4. CSS:用户选择

如果您只是想阻止文本选择,请尝试user-select:none. CSS:

#element {user-select:none}

对于这个 CSS 属性,此时所有浏览器都需要一个前缀版本。请参阅caniuse.com/user-select-none


5. 通过 JavaScript 禁用事件

如您的问题所述,您可以使用 JavaScript(或您的情况下的 jQuery)来防止触发默认事件。对于大多数常见的点击事件,这实际上也是一个有效的答案。

$("#element")
    .off("click")
    .click(function(e) {e.preventDefault()});

根据元素的不同,这阻止链接被跟踪、表单被提交、复选框被选中等等。通过使用.off("click")它还可以禁用您之前挂钩到click事件的任何 JavaScript 触发器。


最后的想法:让你的用户知道发生了什么

请不要在没有视觉提示的情况下禁用元素。如果用户突然无法单击某些元素,您会感到困惑。例如,尝试使内容半透明,或添加“等待”光标图标。

祝你好运!

于 2013-11-06T20:39:59.637 回答
0

从潜水中删除点击事件并将其添加到应该携带它的特定元素中。

我认为你这样做的方式不够具体。

于 2013-11-06T20:35:13.220 回答