Tymczasowo wyłącz wszystkie aktualnie aktywne programy obsługi zdarzeń jQuery
RobięTD
element edytowalny tabeli po dwukrotnym kliknięciu:
$(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;
}
Ale kiedy dwukrotnie klikam tekst wewnątrz edytowalnego div, zdarzenie podwójnego kliknięcia rozchodzi się do rodzica td powodując niepożądane konsekwencje. Istnieją również inne wydarzenia (select
, mousedown
, itp.) chcę zapobiec, więc pisanie kodu dla każdego z nich nie jest dla mnie przyjemne.
Czy istnieje sposób na wyłączenie wszystkich aktualnie aktywnych programów obsługi zdarzeń jQuery i włączenie ich później? Lub w jakiś sposób przestać propagować wszystkie zdarzenia z edytowalnego diva do swoich rodziców?