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 触发器。
最后的想法:让你的用户知道发生了什么
请不要在没有视觉提示的情况下禁用元素。如果用户突然无法单击某些元素,您会感到困惑。例如,尝试使内容半透明,或添加“等待”光标图标。
祝你好运!