tbody>tr>td.cell", function(e) { if (e.w-6ren">
gpt4 book ai didi

javascript - 暂时禁用所有当前事件的 jQuery 事件处理程序

转载 作者:数据小太阳 更新时间:2023-10-29 04:30:13 26 4
gpt4 key购买 nike

我正在制作一个双击可编辑的 TD 元素:

$(document).on("dblclick", "#table>tbody>tr>td.cell", function(e) {
if (e.which != 1 || e.shiftKey || e.altKey || e.ctrlKey)
// need left button without keyboard modifiers
return;
reset_selection();
var editor = document.createElement("div");
editor.setAttribute("contenteditable", "true");
editor.innerHTML = this.innerHTML;
this.innerHTML = '';
// this.style.padding = 0;
this.appendChild(editor);
$(document).on("*", stub);
editor.onblur = function() {
// this.parentNode.setAttribute("style", "");
this.parentNode.innerHTML = this.innerHTML;
sys.editor = null;
$(document).off("*", stub);;
};
editor.focus();
});

function stub(e) {
e.stopImmediatePropagation();
return false;
}

但是,当我双击可编辑 div 内的文本时,双击事件会传播到父 td,从而导致不良后果。还有其他事件(selectmousedown 等)我想阻止,所以为每个事件编写一个 stub 对我来说不太好。

enter image description here

有没有办法禁用所有当前事件的 jQuery 事件处理程序并在之后启用它们?或者以某种方式停止将所有事件从可编辑的 div 传播到它的父级?

最佳答案

Or somewhow stop propagating all events from the editable div to its parents?

它可能不是很可口,但是那么专门禁用事件并不是坏事:

$(this).on("select mousedown mouseup dblclick etc", false);

(假设 this 指的是您正在编辑的单元格。)

事件毕竟有限,on允许您在以空格分隔的字符串中列出它们,并通过传递 false 来禁用它们。

然后您可以通过将相同的列表和 false 再次传递给 off 来重新启用它们.

关于javascript - 暂时禁用所有当前事件的 jQuery 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com