2016-04-05 13 views
1

Ich habe eine Tabelle, die Daten in verschiedenen Ebenen (Parent, Child, Grandson) zeigt, wenn ich auf das Elternelement klickt, zeigt es neue Zeilen für die untergeordnete Ebene an, und wenn ich auf Kind klicke zeigt es ein dritte Stufe als der Enkel mit mehr Reihen.Hinzufügen einer Aktion zur Schaltfläche mit jQuery

Was ich tun möchte, ist eine Schaltfläche auf jedem Datensatz mit dem "+" - Symbol, so dass ich die zweite Ebene zu sehen und wechseln Sie diese Schaltfläche von der Eltern mit dem "-" Symbol , um die Funktion zum Erweitern und Reduzieren zu simulieren, möchte ich dies auch für die untergeordnete Ebene tun.

Jetzt erweitern oder reduzieren die Spalten, wenn ich auf eine Zeile klicke, aber ich möchte dies tun, wenn ich auf die Schaltflächen klicke, die ich hinzufügen möchte.

Hier ist mein Code:

$('.drillDown tr td:last-child, .drillDown tr th:last-child').hide(); 

$('.drillDown tr td:first-child, .drillDown tr th:first-child').dblclick(function(){ 
    $('.drillDown tr td:last-child, .drillDown tr th:last-child').show(); 

}) 


    $('table.drillDown').each(function() { 

     var $table = $(this); 
     $table.find('.parent').dblclick(function() { 
      console.log("*****Click on Parent"); 
      $(this).nextUntil('.parent', ".child").toggle("fast"); 
      $(this).nextUntil('.parent', ".grandson").hide("fast"); 
     }); 

     $table.find('.child').dblclick(function() { 
      console.log("*****Click on child"); 
      $(this).nextUntil('.child', ".grandson").toggle("fast"); 

     }); 

     var $childRows = $table.find('tbody tr').not('.parent').hide(); 
     $table.find('button.hide').dblclick(function() { 
      $childRows.hide(); 

     }); 
     $table.find('button.show').dblclick(function() { 
      console.log("*****Click on Child"); 
      $childRows.filter('.child').show(); 
     }); 
     $table.find('tr.child').dblclick(function(){ 
      $(this).nextUntil('.child').show() 
     }); 

    }); 

Und meine Geige auch mit dem vollständigen Beispiel

https://jsfiddle.net/ny6qcxtd/2/

Dank!

Antwort

4
changed with following fiddle 

fiddle

+0

Ihre Logik geht falsch, wenn Sie in Kindersymbol klicken. Es wird angezeigt - Zeichen anstelle von + Zeichen. Schritte zu Problem 1) klicken Sie auf Eltern-Symbol. 2) dann nach Klick auf das Kindersymbol. 3) dann nach Clik auf Eltern-Symbol, so dass alle Zeile zusammengebrochen ist. aber danach klicken Sie wieder auf das Elternsymbol, das Kindersymbol zeigt an - nicht +. Überprüfe dein Spiel. –

+0

@LaljiNakum Danke für deine Zeit, ich wollte einige ausgefallene Tasten verwenden, aber das funktioniert perfekt für mich. – kennechu

2

Sie können Aktion auf Ihre Schaltfläche mit .click (Handler) Funktion in Jquery

EX hinzufügen.

$("#target").click(function() { 
    alert("Handler for .click() called."); 
}); 

wo target Ihre Schaltfläche-ID ist.

+0

Bitte, kreuzen Sie es als eine richtige Antwort, wenn es Ihr Problem –

2

Betrachten Sie diesen Code, es ist ein einfaches Design mit höherer Leistung.
kann es Ihnen helfen,

<div class="row"> 
     <div class="col-lg-12 text-center"> 

      <table class="table table condensed drillDown"> 

       <thead> 

        <!--SUB HEADER 2--> 
        <tr style="background-color: #E3E3E3"> 

         <!--SALES--> 
         <th></th> 
         <th style="text-align: center">Categories</th> 
         <th style="text-align: center">LW $</th> 
         <th style="text-align: center">LW</th> 
         <th style="text-align: center">L4 W</th> 
         <th style="text-align: center">L13 W</th> 
         <th style="text-align: center">L52 W</th> 

        </tr> 


       </thead> 

       <tbody> 
        <tr class="parent" style="cursor:pointer"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px;font-size: 20px;">+ </td> 

         <td>33 D33 GIRLS DRESS </td> 

         <td>$1,564.90</td> 
         <td>1.5%</td> 
         <td>1.7%</td> 
         <td>6.4%</td> 
         <td>1.1%</td> 


        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>05 D05 MOVIES</td> 

         <td>$897.56</td> 
         <td>2.2%</td> 
         <td>1.34%</td> 
         <td>4.7%</td> 
         <td>8.9%</td> 


        </tr> 

        <tr class="grandson" style="background-color: #D8E8FF"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>05 D05 MOVIES</td> 

         <td>$897.56</td> 
         <td>2.2%</td> 
         <td>1.34%</td> 
         <td>4.7%</td> 
         <td>8.9%</td> 


        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>06 D06 BATTERIES</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="parent" style="cursor:pointer"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>19 D19 HOME DECOR</td> 

         <td>$1,673.99</td> 
         <td>3.3%</td> 
         <td>5.7%</td> 
         <td>2.5%</td> 
         <td>3.6%</td> 


        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>34 D34 LDS WVN TOPS</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>72 D72 AUDIO HARDWARE</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>72 D72 UNASSIGNED</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>87 D87 UNLOCKED PHONES</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 
       </tbody> 
      </table> 

     </div> 
    </div> 
    <!-- /.row --> 

</div> 

jetzt Sie einfach Onclick-Funktion mit Ihrem GUID binden kann, und eine solche Klasse hinzufügen, die mit Ihrer + ersetzen -, wenn der Benutzer eine Zeile öffnet.
so, es gibt keine Notwendigkeit, Tasten zu binden,
, wenn Sie weitere Hilfe benötigen, ping mich in Kommentaren.

+0

Vielen Dank für Ihre Zeit und Disposition für weitere Hilfe gelöst, seine ehrfürchtige! :) – kennechu

+0

Ihre Begrüßung ... – Bharat

1

Vielleicht könnten Sie etwas wie folgt verwenden:

$(".classOfButton").click(function() { 
       $(".classOfWhatYouWantToExpand").fadeToggle("slow", "linear") 
      }); 

So auf dem Klick auf Ihre Taste verwenden, um die jQuery .fadeToggle() Funktion. Achte nur darauf, was dein Ziel ist und verwende geeignete Klassen oder IDs.

fadeToggle()
jQuery .click()

+1

mit Bharat Code unten sollten Sie zu einer Position, wo Sie leicht verbinden die Klick-Funktionen dieser "+" Abschnitte, die er mit der Funktion FadeToggle() gemacht hat. Das kommt mit einer netten Animation auch. –

+0

Danke für Ihre Zeit :) – kennechu

+0

Ich habe es gemacht, um wie Microsoft-Portale aussehen, hier ist es nur Demo-Version, aber ich habe voll weicher Code ... – Bharat

1
$("#target").click(function() { 
    alert("click event"); 
}); 
$("#target").submit(function() { 
    alert("submit event"); 
}); 
+0

Vielen Dank für Ihre Zeit :) Dies hilft mir sehr! – kennechu

1

einfach können Sie auf eine Schaltfläche klicken Funktion binden, unter Code.

für exa.

$("#dataTable tbody tr").on("click", function() { 
    console.log($(this).text()); 
}); 

für Ihren Code es aussieht,

$("#target").on("click", function() { 
console.log($(this).text()); 
}); 
Verwandte Themen