我在一个
标签内有多个
Html
元素。有没有办法禁用该标签的鼠标和键盘事件(而不是单个元素)?这些元素是自动生成的,位于多个标签内。因此,我只想禁用整个
标签,以便不能更改任何内容,但仍然可以保持
readonly
状态。
$('#my_div_id').unbind();
它将删除绑定在该div上的所有事件。参见UNBIND
您也可以使用 .die 方法,例如:
$('#my_div_id').die();
#yourDiv {pointer-events:none;}
$('#yourDiv').click(function(e){
e.preventDefault();
});
点击事件也适用于通过键盘访问复选框和单选按钮,但如果您需要防止在输入字段上键入文本,只需将键盘事件添加到列表中:
$('#yourDiv').click(function(e){
e.preventDefault();
});
$('#yourDiv').keypress(function(e){
e.preventDefault();
});
$('#yourDiv input').prop("disabled", true);
在加载后。不了解您的html很难确定最佳方案。.on("click keypress")
可以阻止鼠标和键盘事件,而且更简洁。 - user5147563var $ventanaModal = $('<div id="pantallaTransparente" class="ip-container containerFondoModal zIndexAlto"></div>');
$('body').prepend($ventanaModal);
这里是css类:
.pantallaTransparente {
background: transparent;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 99999999;
}
$('#foo').unbind();
或者,如果您想禁用特定事件,可以像这样使用:
$('#foo').unbind('click');
.div-element {
pointer-events: none; // disable all the pointer events in div
}
.div-element * {
pointer-events: auto; // enables all the pointer events in children elements of the div
}
我相信你可以在元素上绑定一个处理程序,执行event.stopImmediatePropagation()
只要这个事件首先触发,所有其他事件都不会触发。
不幸的是,手动定义事件优先级是不可能的。你必须确保该事件在堆栈中最后定义。
这个按照我的预期工作了:
element.style {
pointer-events: none;
}
// prevent click and keypress events for readonly marked inputs
$(":input[readonly='readonly']").on("click keypress", function (event) {
event.preventDefault();
});
使用Bootstrap时,可能会在单击和按键事件期间看到一些闪烁。 ;)
div
的 ID,没有其他信息。 - nebula