2010-06-28 4 views
1

J'ai besoin d'un test de santé mentale car j'ai passé environ une heure à essayer de comprendre cela!Impossible de faire fonctionner jQuery hide

getRows().each(function() { 
    alert(this);  // alerts '[object HTMLTableRowElement]', nothing wrong here 
    this.hide();  // row not hidden - wtf? 
    alert('hidden'); // no alert - more wtf! 
}); 

Que peut-il y avoir de mal à ce que l'appel hide() bombarde?

Répondre

7

A l'intérieur du .each()this est un élément DOM (HTMLTableRowElement), vous devez l'envelopper pour en faire un nouveau objet jQuery (qui a la méthode .hide()) comme ceci:

$(this).hide(); 

Sans cela, vous Re obtenir une erreur de méthode indéfinie, car HTMLTableRowElement n'a pas la méthode .hide() :) Cette erreur est également la raison pour laquelle l'alerte ne tire pas après, car l'exécution s'est arrêtée sur l'erreur.

+0

merci. n00b échoue :) – fearofawhackplanet

2

essayer $(this).hide()

2

Vous ne recevez pas la 2ème alerte parce que la ligne précédente a provoqué une erreur. Changer à

$(this).hide(); 

this fait référence à l'élément sélectionné, mais qui ne possède pas une méthode hide. Vous devez envelopper dans un objet jQuery qui a la méthode hide.