2010-08-25 5 views
2

j'ai posté une question next() not working et réponse gota qui fonctionne très bien, mais quelqu'un peut me expliquer ce qui se passe exactement ici:sens de ce code jquery

$(this).closest('tr').next('tr').find("img.cc").toggle() 
     .closest('tr').siblings('tr').find("img.cc").hide(); 
+1

42. La réponse est 42 –

Répondre

10
<tr>        <<-- 1.) <<-- 6.) 
    <td> 
    <a href="#" class="xx"></a>    <<-- we start here 
    </td> 
    <td> 
    data 
    </td> 
</tr> 
<tr>        <<-- 2.) <<-- 5.) 
    <td> 
    <img src="#" class="cc" /> <<-- 3.) <<-- 4.) 
    </td> 
</tr>  
<tr>        <<-- 6.) 
    <td> 
    <a href="#" class="xx"></a> 
    </td> 
    <td> 
    data2 
    </td> 
</tr> 
<tr>        <<-- 6.) 
    <td> 
    <img src="#" class="cc" /> <<-- 7.) 
    </td> 
</tr> 
  • 1.)$(this).closest('tr')

    Cette ligne passe à 1.)

  • 2.).next('tr')

    Nous sommes arriver à 2.)

  • 3.).find("img.cc")

    Maintenant, nous avons trouvé l'élément avec espoir 3.)

  • 4.).toggle()

    On passe visibilty de l'élément 4.) (visible/cachée)

  • 5.).closest('tr')

    Nous sautons au parent le plus proche tr

  • 6.)siblings('tr')

    Nous recevons tous tr's marqués d'6.)

  • 7.).find("img.cc").hide();

    Trouvez la img.cc dans tous les frères et sœurs tr's -> 6.) et masquer les.

+1

+1 pour la source HTML – Boldewyn

+0

très belle et concise façon d'exprimer les résultats de l'arbre. – Anurag

0

Alterne visiblité de img.cc dans le tableau suivant row et cache tous les autres img.cc dans la table.

1

Ce code est probablement pris de au milieu le contexte d'une function

la première ligne dit quelque chose comme:

A partir de this (l'élément/s invoqua), trouver les le plus proche (parent) tr puis chercher le nexttr (ce qui signifie un frère de this parent) et find un img avec le class de "cc" et toggle sa valeur display (ce qui signifie, si son visible, puis le cacher et si son caché le montrer.


La deuxième ligne commence là où il a terminé, et dit trouver un img avec un class de « cc » dans le siblings du plus proche (parent) tr de côté tr et cacher que.

+0

pas mon downvote, mais vous êtes absent le premier traversal jusqu'à la '' :) –

+0

Corriger, pour être complet je vais finir :) – adardesign

3

Il effectue les opérations suivantes, chaque étape liée à la méthode appelée:

  1. .closest('tr') - vont de l'élément courant jusqu'à l'ancêtre le plus proche <tr> (ou lui-même, si elle est déjà un <tr>).
  2. .next('tr') - aller à la ligne suivante frères et soeurs
  3. .find("img.cc") - trouve une <img class="cc"> dans cette ligne
  4. .toggle() - bascule il (montrer si caché, se cacher si montré)
  5. .closest('tr') - revenir à la <tr>
  6. .siblings('tr') - sélectionner tous frères et soeurs (autres) lignes
  7. .find("img.cc") - trouver tous les <img class="cc"> en eux.
  8. .hide() - les cacher

Il pourrait être une morsure plus efficace que l'utilisation .end() de sauter en arrière dans la chaîne, comme ceci:

$(this).closest('tr').next('tr').find("img.cc").toggle() 
     .end().siblings('tr').find("img.cc").hide(); 
+0

I pense que le 'fin()' est (ou peut) ne pas être ce qu'il voulait. voir la réponse adardesign. – adardesign

+0

Nick - Pour ma défense; o) J'ai pensé à utiliser '.end()' dans ma réponse, mais j'ai pensé que je devais garder les choses aussi simples que possible. Je dirais que j'ai peut-être raison. : o) +1 – user113716

Questions connexes