2016-10-27 2 views
-1

Ich habe eine Seite, die dynamische Formulare und Tabellen enthält, die mit AJAX abgerufen werden. Ich versuche, jede Tabelle zu zielen, abhängig davon, welche Schaltfläche zum Senden von Dateien gesendet wurde, aber aus irgendeinem Grund scheint jquery die eindeutige ID der Tabellen nicht zu sehen. Ich vermute, dass jquery nur die ID der ersten Tabelle holt, aber ich verstehe nicht warum?Warum sieht Jquery die eindeutige ID nicht?

console.log(tableid) druckt myTable1 auf allen Tasten lege ich auf der Seite jedoch drücken die HTML-Inspektion zeigt mir, dass alle IDs der myTable einzigartig sind zB myTable1,myTable2,myTable3 ..... und so weiter.

Die dynamische Form und Tabelle

<form id="myForm" class="myForm" action="" method="post" style=""> 

    <input type="hidden" name="page_id" value="'.$id.'"> 


    <button type="submit" class="fabutton"></i></button> 
</form> <!--END OF FORM----> 



<table id="myTable'.$i.'" class="table"><!--$i increments by 1 with each form----> 
    <tbody> 
     <tr> 
    </tr> 
</tbody> 
</table> 

Die jquery (auf einer anderen Seite, wo die Form und Tabelle wiedergegeben werden)

$(document).on('submit', '.myForm', '.results', function(e) { 

      var tableid = $('.table').attr('id'); //Get table id 

      console.log(tableid) 
+1

Wäre sinnvoller sein, die zu sehen ** gerendert ** HTML, anstatt Ihren dynamischen Code. –

+1

Auch - Ihr Formular enthält die Tabelle nicht, also wie würde es wissen, welche Tabelle zu betrachten? Ihre jQuery sagt nur "finde die erste Tabelle und bekomme die ID". Und es tut .. Welchen Tisch soll es bekommen? –

+0

$ ('. Table') würde ein Array von Elementen zurückgeben, also wenn Sie versuchen, eine ID zu erhalten, gibt es die ersten Elemente id zurück – Geeky

Antwort

2

, weil du var tableid = $('.table').attr('id');

tun Dies ist nicht beschränkt auf die aktuelle Form, mit der Sie arbeiten, aber auf das gesamte Dokument.

aktualisieren

Wenn das .table direkt das Element Formular folgendes tun dann

var tableid = $(this).next(); 

Original- (wird nicht funktionieren, weil .table nicht in der Form ist)

Versuchen Sie, einen Kontext zu verwenden, wenn für die Tabelle, wie die folgenden suchen (this verweist auf die Form, so dass es für ein .table in dieser Form aussehen)

var tableid = $('.table', this).attr('id'); 
+0

Oder: '$ (this) .next ('. Table')', um sicher zu sein. –

+0

Ich habe tatsächlich $ (this) .next ('. Table') versucht, aber es hat nicht funktioniert. Die Variable bleibt undefiniert. Ich sollte hinzufügen, dass var myform = $ (this) .attr ('id'); zeigt mir alle einzigartigen Form-IDs, wie ich es erwarten würde. – JulianJ

+0

Am Ende war das die Antwort: var tableid = $ (this) .closes ("div"). Find ("Tabelle"). Attr ("id"); // Tabellen-ID finden – JulianJ