Sto facendo un elemento TD
di tabella modificabile sul doppio clic:Disattivare temporaneamente tutti i gestori di eventi jQuery attualmente attivi
$(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;
}
Ma quando fare doppio clic sul testo all'interno del div modificabile, il doppio evento click si propaga a il genitore che causa conseguenze indesiderate. Ci sono anche altri eventi (select
, mousedown
, ecc.) Che voglio impedire, quindi scrivere uno stub per ognuno di essi non mi sembra piacevole.
C'è un modo per disattivare tutti i gestori di eventi jQuery attualmente attivi e consentire loro in seguito? O in qualche modo smettere di propagare tutti gli eventi dal div modificabile ai suoi genitori?
Cosa succede se uno dei genitori di 'td' ha anche alcuni gestori? Devo anche fare uno stub per ognuno di loro? – warvariuc
@warwaruk: Nessuna necessità, 'false' interrompe la propagazione. –
Ho '