我需要在设置标志之前禁用网页上的任何活动。让我们忽略该标志,并说我只是想永远禁用任何点击该页面。我认为它会如此简单:
$(window).click(function(e) {
e.preventDefault();
});
鉴于上述情况,我仍然可以点击链接。
如何渲染所有点击惰性?
答案 0 :(得分:13)
你不能这样做,因为点击首先被链接捕获,然后转发到封闭元素。
最简单的解决方案是在窗口上放置一个不可见的div:
#mask {
position: fixed;
left:0; right:0; top:0; bottom:0;
}
正如Connor所指出的,您可能需要设置z-index
(实际上它取决于页面的其余部分)。
答案 1 :(得分:3)
除了破坏回答你可以做的其他事情是为你的身体设置一个班级no-click
和以下的CSS
body.no-click * {
pointer-events: none;
}
要启用点击,只需从您的身体中移除课程no-click
如果您需要支持< IE 11,忘了pointer-events
。 Compatibility
答案 2 :(得分:2)
这就是我要做的事情:
var done = false;
$('body').on('click', '*', function(e) {
if (!done) e.preventDefault();
}).on('load', function() {
done = true;
});
答案 3 :(得分:0)
如果您需要完全停止页面上的点击,您可以解除所有点击事件的绑定,例如在此答案中:
https://stackoverflow.com/a/13056681/303552
function RecursiveUnbind($jElement) {
// remove this element's and all of its children's click events
$jElement.unbind();
$jElement.removeAttr('onclick');
$jElement.children().each(function () {
RecursiveUnbind($(this));
});
}
您可以像这样调用函数:
RecursiveUnbind($(window));
答案 4 :(得分:-1)
只返回false
$("*").on("click",function(e) {
e.preventDefault();
return false
});
或
$("*").on("click",function(e) {
e.preventDefault();
e.stopPropagation()
});
这两个都会阻止传播到其父元素,因此默认会被阻止
答案 5 :(得分:-1)
我认为这就是你要找的东西。使用名称空间,以便您不撤消任何其他单击事件。
注意:执行阻止的点击必须高于任何其他脚本标记。
示例:http://jsfiddle.net/qNuRA/2/
$('*').on('click.startup', function (e) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
});
$(document).ready(function () {
$('*').off('click.startup');
});