Ich mache ein TD
Element der Tabelle editierbar auf Doppelklick:Deaktivieren Sie vorübergehend alle derzeit aktiven jQuery Event-Handler
$(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;
}
Aber wenn ich auf den Text innerhalb des editierbaren div klicken verdoppeln, die Doppelklick-Ereignis propagiert zu das Elternteil verursacht unerwünschte Folgen. Es gibt auch andere Ereignisse (select
, mousedown
, etc), die ich verhindern möchte, also ein Stub für jeden von ihnen zu schreiben, sieht nicht nett zu mir aus.
Gibt es einen Weg, um alle derzeit aktiven jQuery Event-Handler zu deaktivieren und sie anschließend aktivieren? Oder irgendjemand hört auf, alle Ereignisse vom editierbaren Div zu seinen Eltern zu propagieren?
Was ist, wenn einer der Eltern von 'td' auch einige Handler hat? Habe ich auch einen Stummel für jeden von ihnen gemacht? – warvariuc
@warwaruk: Keine Notwendigkeit, 'false' stoppt die Verbreitung. –
Ich habe '