Można użyć event delegation, na zasadzie łączenia obsługi tylko jednego zdarzenia do całego dokumentu, a dostać element którego zdarzenie zostało pierwotnie wysłane, używając event.target:
document.body.onmousedown = function (e) {
e = e || window.event;
var elementId = (e.target || e.srcElement).id;
// call your re-create function
recreate(elementId);
// ...
}
function recreate (id) {
// you can do the DOM manipulation here.
}
Edycja: można przypisać zdarzenia aby wszystkie draggables Scriptaculous w ten sposób:
Event.observe(window, 'load', function() {
Draggables.drags.each(function (item) {
Event.observe(item.element, 'mousedown', function() {
alert('mouseDown ' + this.id); // the this variable is the element
}); // which has been "mouse downed"
});
});
Sprawdź przykładem here.
Doskonale, dzięki. –
Nie ma za co! – CMS
Warto zauważyć, że im wyżej w DOM radzimy sobie z takim wydarzeniem, tym bardziej należy uważać na to, co robimy wewnątrz handler'a, ponieważ może on potencjalnie zostać zwolniony * bardzo *. –