2012-01-11 17 views
5

a.nodeName è indefinitoa.nodeName è errore non definito Jquery

ho guardato questo in su ma le spiegazioni non sembrano affatto chiaro per me.

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

All'interno deleteThisRow', 'this' farà riferimento a' finestra ', non l'immagine '. Perché non associ il gestore di eventi con jQuery? –

risposta

14

Il this parola chiave nella funzione non si riferisce all'elemento che è stato cliccato. Di default si riferirebbe all'elemento più alto nel DOM, che sarebbe il window.

Prova questo:

<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

In effetti, questo errore indica che hai usato $ (questo) in modo errato. In questo caso, stavo cercando di chiamare una funzione che avevo scritto supponendo che sarebbe stata chiamata da un particolare evento, al di fuori di quell'evento. – neminem

+1

Esilarante, un paio di anni dopo, avendo dimenticato questo, ho fatto di nuovo la stessa identica cosa, ho trovato questo commento molto utile, è andato a svenderlo e non ci sono riuscito, perché risulta che sono stato io a scriverlo. Grazie, me stesso! : D – neminem

1

Prova:

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