2016-05-17 2 views
1

Ich habe eine dynamisch generierte HTML-Code zu klicken, die wie folgt aussieht:Schleife durch die Anpassungstabelle, wenn auf eine Schaltfläche

<div class="systeme"> 
    <table method="post" class="table table_cultures"> 
     <tr class="formRows"> 
      <td>Something</td> 
      <td>Something</td> 
      <td>Something</td> 
      <td>Something</td> 
     </tr> 
    </table> 
    <button class="btn btn-default valider_systeme_culture">Valider</button> 
</div> 

<div class="systeme"> 
    <table method="post" class="table table_cultures"> 
     <tr class="formRows"> 
      <td>Something 2</td> 
      <td>Something 2</td> 
      <td>Something 2</td> 
      <td>Something 2</td> 
     </tr> 
    </table> 
    <button class="btn btn-default valider_systeme_culture">Valider</button> 
</div> 

Wenn ich auf eine der Schaltflächen klicken, ich mit Javascript durch die Anpassungstabelle Schleife wollen und nur diese Tabelle.

Derzeit, wenn ich auf eine Schaltfläche klicke, bekomme ich alle Daten der beiden Tabellen.

In Javascript, ich habe dies:

var table = $(".table_cultures tbody"); 
table.find('.formRows').each(function (i) { ... }); 

ich auch mit der Funktion versucht .parents() aber danach habe ich einen .find('.table_cultures tbody) nicht tun kann, es funktioniert nicht. Die Sache ist, dass ich table_cultures tbody finden muss, weil es mir erlaubt, die Reihen zu durchlaufen, wenn es einen tbody gibt.

Wie soll ich die richtige Tabelle durchlaufen?

Antwort

0

können Sie $(this).prev('table') verwenden, wo $(this) Schaltfläche geklickt wird und dann erhalten Sie prev("table")DEMO

$('.btn').click(function() { 
    $(this).prev('table').find('.formRows').css('background', 'red') 
}) 
+0

Danke, aber es kann nur funktionieren, wenn es nichts zwischen der Schaltfläche und der Tabelle gibt. In meinem Fall habe ich Elemente dazwischen. Ich weiß, dass es in meinem Beispiel nichts anderes als eine vereinfachte Version meines Codes gibt:/Ich habe die Geige bearbeitet, indem ich ein div nur für dich hinzugefügt habe: https://jsfiddle.net/Lg0wyt9u/852/ – Erlaunis

+0

Für das zweite Beispiel Tabelle finden Sie Ihren Code sollte wie folgt aussehen https://jsfiddle.net/Lg0wyt9u/854/ –

+0

Es funktioniert in der Geige, aber es nicht, wenn ich versuche, in Echt – Erlaunis

0

Nenad Vracar ‚s Ansatz fast okey ist, aber die ursprüngliche Frage stellt klar, dass die Tabellen dynamisch erzeugt werden, so Delegieren der Veranstaltung sollte sicherer sein.

$('body').on('click', '.btn', function() { 
    $(this).siblings('table') 
    .find('.formRows') 
    .each(function (index, elem) { 
     //var $elem = (this); 
     //either use the function parameters is the this variable 
     //to do something with the current row 
    }); 
}); 
+0

Die Funktion' prev' kann nicht mit mir arbeiten weil ich Elemente zwischen dem Button und dem Tabelle. Bitte beachten Sie den Kommentar zu der anderen Antwort – Erlaunis

+0

dann ändern Sie einfach die 'prev' Funktion zu' Geschwister', wenn Sie nur eine Tabelle dort haben; Ansonsten verwenden Sie strengere Selektoren – zedling

Verwandte Themen