2012-01-11 9 views
5

a.nodeName no está definidoa.nodeName es el error indefinido Jquery

He mirado esto, pero las explicaciones no parecía del todo claro para mí.

function deleteThisRow() { 
    $(this).closest('tr').fadeOut(400, function(){ 
     $(this).remove(); 
    }); 
} 
<tr> 
    <td>blah blah blah</td> 
    <td> 
     <img src="/whatever" onClick="deleteThisRow()"> 
    </td> 
</tr> 
+1

Dentro 'deleteThisRow',' this' se referirá a 'window', no la imagen. ¿Por qué no unir el controlador de eventos con jQuery? –

Respuesta

14

El this palabra clave en su función no se refiere al elemento que se ha hecho clic. Por defecto, se referiría al elemento más alto en el DOM, que sería el window.

Prueba esto:

<tr> 
    <td>blah blah blah</td> 
    <td><img src="/whatever"></td> 
</tr> 
$("tr td img").click(deleteThisRow); 

function deleteThisRow() { 
    $(this).closest('tr').fadeOut(400, function() { 
     $(this).remove(); 
    }); 
} 
+0

De hecho, parece que este error significa que usaste $ (esto) incorrectamente. En este caso, estaba tratando de llamar a una función que había escrito suponiendo que se llamaría desde un evento en particular, fuera de ese evento. – neminem

+1

Hilarantemente, un par de años después, olvidándome de esto, hice exactamente lo mismo otra vez, encontré este comentario muy útil, fui a votarlo y no pude, porque resulta que fui yo quien lo escribió. Gracias, yo mismo! :RE – neminem

1

Probar:

$(document).ready(function() { 
    $("img").click(function() { 
     $(this).closest('tr').fadeOut(400, function(){ 
      $(this).remove(); 
     }); 
    }); 
}); 
Cuestiones relacionadas