Tengo una página que me gustaría enlazar arrastrar/soltar eventos. Me gustaría que toda la página en el navegador para ser el destino, así que me he obligado a mis eventos para el document objeto. Mi contenido de la aplicación se carga en el área de contenido principal a través de AJAX, sin embargo, y yo sólo como estos controladores de eventos se activa cuando la carga de la página es visible actualmente.

Ahora, estoy de unión de los controladores de eventos cuando la carga de la página se recupera; sin embargo, cada vez que la página de carga se activa, se une un nuevo controlador de eventos, lo que causa que el controlador de fuego varias veces cuando el usuario va a la página de carga, hojas, y luego regresa. Yo estaba pensando que yo podría resolver este si me podría hacer que el controlador se unen sólo cuando ya no enlazado. Es esto posible o estoy en vistas de una mejor alternativa?

Código correspondiente, por si ayuda:

$(document).bind('dragenter', function(e) {
    e.stopPropagation();
    e.preventDefault();
}).bind('dragover', function(e) {
    e.stopPropagation();
    e.preventDefault();
}).bind('drop', function(e) {
    e.stopPropagation();
    e.preventDefault();
    self._handleFileSelections(e.originalEvent.dataTransfer.files);
});
InformationsquelleAutor FtDRbwLXw6 | 2012-07-23

1 Comentario

  1. 32

    Unbind existente de los controladores de eventos antes de enlazar los nuevos. Esto es realmente sencillo con nombres de espacios de eventos [docs]:

    $(document)
      .off('.upload') //remove all events in namespace upload
      .on({
          'dragenter.upload': function(e) {
              e.stopPropagation();
              e.preventDefault();
          },
          'dragover.upload': function(e) {
              e.stopPropagation();
              e.preventDefault();
          },
          //...
      });
    • Tuve que usar bind() y unbind() en lugar de on() y off(), pero este método ha funcionado bien. Gracias!
    • Sí, si usted está atascado con una versión anterior de jQuery (pasando de un objeto a bind debería funcionar bien). Nombres de espacios de eventos se han introducido en jQuery 1.2 por lo que definitivamente debe trabajar 🙂 Feliz codificación!

Dejar respuesta

Please enter your comment!
Please enter your name here