2016-10-27 10 views
-1

私は動的フォームとajaxでフェッチされたテーブルを含むページを持っています。どのフォーム提出ボタンが押されたかに応じて各テーブルをターゲットにしようとしていますが、何らかの理由でjqueryがテーブルの一意のIDを認識していないようです。私はjqueryが最初のテーブルのIDだけをフェッチしていると思うが、私はなぜ理解できないのだろう?私はしかし、ページ上のhtmlを検査キーを押し、すべての送信ボタン上Jqueryが一意のIDを認識しないのはなぜですか?

console.log(tableid)プリントmyTable1myTableのすべてのidのは、そうでユニーク例えばmyTable1,myTable2,myTable3です.....とことを私に示しています。あなたはvar tableid = $('.table').attr('id');

を行うので、これがないです

(フォームとテーブルがレンダリングされている別のページ上の)動的なフォームとテーブル

<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> 

jqueryの

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

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

      console.log(tableid) 
+1

次のように、コンテキストを使用してみてくださいあなたのダイナミックなコードではなくHTML **をレンダリングします。 –

+1

また、あなたのフォームにはテーブルが含まれていないので、どのテーブルを見るべきかはどのように分かりますか?あなたのjQueryは「最初のテーブルを見つけてIDを取得する」と言っています。そして、それは..どのテーブルを入手すべきですか? –

+0

$( '。table')は要素の配列を返すので、idを取得しようとするときは、最初の要素id – Geeky

答えて

2

作業している現在の書式に限られていますが、ドキュメント全体に適用されます。

更新

.tableは直接

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

オリジナル.tableフォームの内側ではありませんので、が動作しません)

を行い、その後、フォーム要素を次されている場合 テーブルを探していたときに(それがその形.tableを探しますので、 thisポイントフォームに)

は**を参照して、より有用であろう

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

または、 '$(this).next( '。table')'。 –

+0

私は実際$(this).next( '。table')を試しましたが、うまくいきませんでした。変数は未定義のままです。私はそれを追加する必要がありますvar myform = $(this).attr( 'id');私が期待するすべてのユニークなフォームIDを私に示します。 – JulianJ

+0

これは答えでした:var tableid = $(this).closest( "div")。find( "table")。attr( "id"); //テーブルIDを見つける – JulianJ

関連する問題