2009-08-09 12 views

Respuesta

10

Puede utilizar event delegation, para conectar básicamente controlador sólo un evento a todo el documento, y obtener el elemento que el evento fue enviado originalmente, usando 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. 
} 

Editar: Puede asignar eventos a todos sus draggables Scriptaculous de esta manera:

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" 
    }); 
}); 

Comprobar un ejemplo here.

+0

Perfecto, gracias. –

+0

¡De nada! – CMS

+1

Vale la pena señalar que cuanto más arriba en el DOM maneje un evento como este, más cuidadoso debe ser sobre lo que hace dentro del controlador, ya que puede ser despedido * mucho *. –

0

Si desea replicar la Identificación del div, una forma fácil podría ser cloneNode así:

<div id="node1"> 
    <span>ChildNode</span> 
    <span>ChildNode</span> 
</div> 

<div id="container"></div> 

<script type="text/javascript"> 
    var node1 = document.getElementById('node1'); 
    var node2 = node1.cloneNode(true); 

    node2.setAttribute('id', 'node2'); 

    var container = document.getElementById('container'); 
    container.appendChild(node2); 
</script> 
+0

También es necesario eliminar el original. Estoy tratando de insertar algún código en la funcionalidad de arrastrar/soltar Scriptaculous que eliminará el original, luego escribo uno nuevo en el div desplegable que debe tener la misma clase e ID. No voy a mentir, todavía no soy un genio con javascript, encontré mi inspiración aquí: http://ashishware.com/MochikitDnD.shtml Sin embargo, él está asignando una identificación de Math.random(), mientras que necesito conservar la misma ID, por lo que estoy intentando parchar esto, así como también hacer que funcione con un número desconocido de arrastre. Aunque creo que tengo la segunda parte baja. –

2

CMS tiene más o menos la respuesta correcta, pero que se necesitan para hacer que el navegador un poco más cruz de usar.

document.body.onmousedown = function (e) { 
    // Get IE event object 
    e = e || window.event; 
    // Get target in W3C browsers & IE 
    var elementId = e.target ? e.target.id : e.srcElement.id; 
    // ... 
} 
+0

Para asegurarse de que esto esté claro, e tendría entonces el valor de mi elemento que luego podría pasar a una variable global, y/o llamar a una nueva función para pasar en e como el parámetro, ¿sí? –

+0

Sí, Chris. Puede pasar el objeto real o la identificación como lo hace CMS en su ejemplo. – Alex

0

Pls inserta este código en tu javascript.

document.getElementById("article").onmouseup(handMu); 
Cuestiones relacionadas