jquery e.de destino.hasClass no funciona

Puedo crear dinámicamente un nuevo div (con un «cuadro de texto» de la clase y de IDENTIFICACIÓN), y algunos otros elementos dentro de ella, y más tarde en mi código que obligar a que div para el evento click, y mostrar el elemento pulsado, así:

$('#textbox_'+i).bind('click', function(event){
    alert(event.target.className);
}

Esto está muy bien, y me va a dar textbox como una de las clases que se muestran.
Pero event.target.hasClass() no parece funcionar. Así, cuando hago lo siguiente, no pasa nada:

$('#textbox_'+i).bind('click', function(event){
    if(event.target.hasClass('textbox')) { alert('got it!'); }
}

Yo lo intenté un par de maneras diferentes y a mí me parece que event.target.hasClass() simplemente no funciona. Hay otra manera de lidiar con los eventos o estoy haciendo algo mal?

InformationsquelleAutor user961627 | 2012-08-28

2 Kommentare

  1. 86

    Estás tratando de usar un método jQuery, hasClass(), en un elemento de DOM. Usted necesita para convertir la llanura JS elemento DOM e.target a un objeto jQuery, así:

    $(event.target).hasClass('textbox')

    Y usted termina con :

    $('#textbox_'+i).on('click', function(event){
         if( $(event.target).hasClass('textbox')) alert('got it!');
    });

    Observe el uso de on(), en el cierre correcto de la click función, y usted no necesita llaves en su declaración si si sólo se está ejecutando una simple alerta.

    • Wow! bueno eso fue sencillo! Tal vez esto es un poco off topic, pero ¿cuál es la diferencia entre $(event.de destino) y el evento.de destino? El primero trabaja con hasClass, pero no cuando trato de alerta .className.
    • hasClass es una función jQuery, .nombre de la clase es la llanura de javascript
    • La primera es envuelto en jQuery, por lo que es un objeto jQuery y se puede utilizar con jQuery métodos. El segundo es un simple objeto de javascript devuelve en las funciones event y puede ser utilizado con la llanura métodos de javascript pero no métodos jQuery.
    • Yo necesarios para detener la propagación de una .vivir el oyente; así que he usado el de arriba de la punta y consiguió if(!$(e.target).hasClass("seeDetails")) return false; y funcionó muy bien. Gracias!
    • Gran solución. Sin embargo, estoy recibiendo este error cuando el documento se carga: ReferenceError: event is not defined. Alguna idea?
    • ¿recuerdas el argumento, como en ...function(event) {
    • Me gusta cuando ASÍ proporcionar a la gente el «qué hiciste» y, a continuación, explicar lo que usted necesita hacer en su lugar. Buen trabajo adeneo!

  2. 23

    Si quieres seguir usando tu JS elemento DOM llanura sin el uso de jQuery:

    event.target.classList.contains('textbox')

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea