Foros del Web » Programando para Internet » Jquery »

Problema con adición de evento

Estas en el tema de Problema con adición de evento en el foro de Jquery en Foros del Web. Buenas, tnego el siguiente codigo que me añade eventos de drag & drop. Todo funcionaba Ok, ahora he cambiado el nodo al que añado el ...
  #1 (permalink)  
Antiguo 11/09/2012, 10:38
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Problema con adición de evento

Buenas, tnego el siguiente codigo que me añade eventos de drag & drop.

Todo funcionaba Ok, ahora he cambiado el nodo al que añado el evento, para que sea un hijo de ese nodo (simplemente le he aplicado la función
Código:
.find('.itemName').first()
LA consola de JAvaScript me dice que $nodoNombre.addEventListener is not a function, pero es que es exactamente iogual que lo que tenia, y antes si iba. El nodo al que lo añado existe, de hecho el resto de eventos (click, etc me siguen funcionando bien con el nuevo nodo).

Mi codigo:

ANTES

Código:
			// Manejadores drag & drop
			folder.addEventListener('dragover', enteringFolder, false);
			folder.addEventListener('drop', dropping, false);
			folder.addEventListener('dragleave', leavingFolder, false);

DESPUES

Código:
Código:
			var $nodoNombre = $(folder).find('.itemName').first();
			
			// Manejadores drag & drop
			$nodoNombre.addEventListener('dragover', enteringFolder, false);
			$nodoNombre.addEventListener('drop', dropping, false);
			$nodoNombre.addEventListener('dragleave', leavingFolder, false);
Qué puede estar pasando? GraciaS!
  #2 (permalink)  
Antiguo 11/09/2012, 10:51
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: Problema con adición de evento

Primero debes verificar que te devuelve esta linea

$(folder).find('.itemName').first()

Si te esta devolviendo un objeto o no, en caso no fuera no podras asignar entonces el evento

Saludos
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 11/09/2012, 10:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con adición de evento

Buenas,

sí, es un objeto. (Si hago alert me sale Object). De hecho, como digo, le estoy asignado eventos por medio de nodoNombre.click()... y esos sí que me funcionan...

Gracias
  #4 (permalink)  
Antiguo 11/09/2012, 11:08
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: Problema con adición de evento

podrias poner la estructura del html para ver que esta obteniendo esta linea
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 11/09/2012, 11:14
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con adición de evento

Si, es dinámico, pero más o menos se entiende:

Código HTML:
<li>
   <div " . $classAtt . " " . $allowedOptions . " " . $propId . ">". 
      "<div class='openclose2'>" . 
          $openButton . 
	  $closeButton . 
	  $loadingButton . 
	"</div> " . 
        "<div class='itemName'>" . $icon . " ". $name .  "</div>" .
    "</div>
</li>";
la variable "folder" contiene el div mas externo (dentro del li), y por tanto, al hacer el find sobre el itemName obtengo el nodo
Código HTML:
"<div class='itemName'>" . $icon . " ". $name .  "</div>"
, al cual le intento aplicar esos eventos que no funcionan, y los de click y dblclick, que son los que me funcionan.
  #6 (permalink)  
Antiguo 11/09/2012, 11:24
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: Problema con adición de evento

Solo una consulta si ya estas usando el jQuery no te bastaría usar los eventos propios del jQuery podrias usar on revisando bien tu código esta linea

$(folder).find('.itemName').first()

te devuelve un objeto de tipo jQuery la cual no es compatible como un HTMLElement propio por lo tanto no reconoce el first en su caso usa on del jQuery
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #7 (permalink)  
Antiguo 11/09/2012, 11:31
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con adición de evento

En ese caso, llega hasta el manejador, el problema es que el parámetro que se le pasa a dicha función es diferente , verdad?

Ahora le estoy pasando el nodo sobre el que se ha generado el evento

Accedo a la variable .dataTransfer del parametro evt que recibia la función manejadora.

(Estoy arrastrando ficheros al navegador)

¿Cómo accedo ahora a los datos del evento para consultar esa propiedad?

Posiblemente lo haya hecho alguna vez pero no recuerdo.

Muchas gracias! :)
  #8 (permalink)  
Antiguo 11/09/2012, 11:34
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con adición de evento

O de otro modo, como convierto el nodo Jquery en un HTMLElement... cualquiera de las dos cosas me serviría, creo
  #9 (permalink)  
Antiguo 11/09/2012, 11:37
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: Problema con adición de evento

Pero al agregar tanto la funcion con jQuery o por mismo JavaScript puedes obtener solo usando la variable e como argumento de la función function(event){}
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #10 (permalink)  
Antiguo 11/09/2012, 11:39
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con adición de evento

No entiendo muy bien lo que dices (y no se si me has entendido bien).

Digo que usando addEventListener, el parametro que recibe la funcion manejadora tiene definida la propiedad dataTransfer (Que son los ficheros que he arrastrado al nodo), mientras que si uso on de jQuery, el manejador no tiene esa propiedad en el parametro que recibe, y no se como acceder a ella.

Perdona si no he entendido bien esto ultimo que me has dicho. Gracias de nuevo, me estas ayudando poco a poco :)
  #11 (permalink)  
Antiguo 11/09/2012, 11:44
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con adición de evento

Lo logre!!!!!!!!! Vasta con usar [0] en lugar de first() en la seleccion del nodo!!

Muchas gracias, si no hubiera sido por ti no lo hubiera sacado :) Ahora te voto positivos :)
  #12 (permalink)  
Antiguo 11/09/2012, 11:48
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: Problema con adición de evento

bueno como te dije podrias haberlo hecho de estas forma

En caso fuera con el addEventListener
Código Javascript:
Ver original
  1. $(folder).find('.itemName').first()[0].addEventListener

en el otro caso fuera jQuery

Código Javascript:
Ver original
  1. $(folder).find('.itemName').first().on({
  2.    dragover: function(e){},
  3.    drop: function(e){}
  4. });
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #13 (permalink)  
Antiguo 11/09/2012, 12:26
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con adición de evento

SOlo sirve la primera, porque en la segunda, el parametro e de la función no tiene la propiedad "dataTransfer", supongo que habría alguna manera de conseguirla. Es que esto como es específico dle api del HTML5...

Muchas gracias, me ayudaste mucho.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:21.