JQuery toggle-Zeilen klicken

Ich versuche zu verstecken/zeigen, eine Teilmenge der Zeilen, wenn Sie auf eine Zeile mit einer bestimmten id.

Durch viel recherche im web und eine Menge versucht, ich habe den folgenden code ein.

Einzige problem ist dieser code für einige Grund nur versteckt/zeigt die ersten Zeilen.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head>
           <title>Test</title>

           <script src="http://code.jquery.com/jquery-1.5.1.min.js" type="text/javascript"></script>

           <script type="text/javascript">

             $(document).ready(function()
             {
                 $('#rowToClick').click(function ()
                 {
                     $(this).nextAll('tr').each( function()
                     {
                         if ($(this).is('#rowToClick'))
                        {
                           return false;
                        }
                        $(this).toggle();
                     });
                 });
             });
           </script>
         </head>          

<body>
<table>
    <tr id="rowToClick"><td>ClickMe</td></tr>
    <tr id="Tr1"><td>Toggled</td></tr>
    <tr id="Tr2"><td>Toggled</td></tr>
    <tr id="Tr3"><td>Toggled</td></tr>
    <tr id="Tr4"><td>Toggled</td></tr>
    <tr id="Tr5"><td>Toggled</td></tr>
    <tr id="rowToClick"><td>ClickMe</td></tr>
    <tr id="Tr6"><td>Toggled</td></tr>
    <tr id="Tr7"><td>Toggled</td></tr>
    <tr id="Tr8"><td>Toggled</td></tr>
    <tr id="Tr9"><td>Toggled</td></tr>
    <tr id="Tr10"><td>Toggled</td></tr>
</table>
</body>

</html>

Jemand einen Vorschlag und/oder umschreiben des Codes?

---------- Update - Endgültige Lösung -----------

Landete ich mit die folgende Lösung basiert auf Brandon ' s input, wie ich wollte, mehr zu tun, Schachteln mit dem gleichen Verhalten, wie eine Art von reduzierbaren Struktur-Ansicht.
Leider, das bedeutete, ich musste ein zusätzliches Attribut zu verfolgen, der Staat, aber damit kann ich Leben, für jetzt, bis ich einen anderen Weg finden (BSP. überprüfen Sie die Sichtbarkeit der nächsten Zeile).

         $(document).ready(function () {
             toggleRows('.module','.namespace');
             toggleRows('.namespace','.type');
             toggleRows('.type','.member');
         });

         function toggleRows(parentClass,subClass)
         {
            $(parentClass).click(function () {

                if( $(this).attr("value")=="collapsed")                 
                {
                  $(this).attr("value","expanded");
                  $(this).nextUntil(parentClass).filter(subClass).toggle(true);
                }
                else
                {
                  $(this).attr("value","collapsed");
                  $(this).nextUntil(parentClass).attr("value","collapsed");
                  $(this).nextUntil(parentClass).toggle(false);
                }       

            });
         }
Haben Sie daran gedacht, mit einem plugin wie tablesorter? blog.pengoworks.com/index.cfm/2008/3/28/...
Verwenden .Daten() statt .attr(). Seine mehr konform: $(this).data("value") und $(this).data("value", "expanded"). Auch, Kette Ihre Anrufe zu vermeiden, das Scannen des DOM-2x: $(this).nextUntil(parentClass).data("value","collapsed").toggle(false);

InformationsquelleAutor Christian Mikkelsen | 2011-03-29

Schreibe einen Kommentar