0

私のhtmlには、このような構造のテーブルが含まれています

<table id="sample">
 <tr class="new_input_field">
   <td><input type="text" class="first_input" /></td>
   <td><input type="text" class="second_input" /></td>
   <td><a href="#" class="first_link">Button1</td>
   <td><a href="#" class="second_link">Button2</td>
 </tr><tr class="new_input_field">
   <td><input type="text" class="first_input" /></td>
   <td><input type="text" class="second_input" /></td>
   <td><a href="#" class="first_link">Button1</td>
   <td><a href="#" class="second_link">Button2</td>
 </tr>
 <tr class="new_input_field">
   <td><input type="text" class="first_input" /></td>
   <td><input type="text" class="second_input" /></td>
   <td><a href="#" class="first_link">Button1</td>
   <td><a href="#" class="second_link">Button2</td>
 </tr>
</table>

そして、私のjqueryの各行について、first_inputとsecond_inputの値の変更の値がサーバーへの呼び出しをトリガーし、その行はこのように置き換えられます。

<tr id="AIK">
<td>some content</td>
<td>some other content</td>
<td><a href="#" class="first_link">Button1</td>
<td><a href="#" class="second_link">Button1</td>
</tr>

私の問題は、動的に置き換えられた行のボタンをクリックするとアラートが表示されるはずです。私はjqueryを与えました

$('#sample tr td a.first_link').click(function () {
 trid = $(this).closest('tr').attr('id');
 if(trid.length > 0) { alert("Swap out will come soon"); }
});

これは、新しく置き換えられた行に対しては正常に機能し、残りの 2 つの行で次のようにエラーが表示されます。

TypeError: Result of expression 'trid' [undefined] is not an object.

ボタンは、新しく置き換えられた行に対してのみ有効にする必要があります。どうすればこれを解決できますか?

4

3 に答える 3

0

動的に追加されたテーブル行を扱っているため、$.click. $.on代わりに、メソッドを介して委任を使用する必要があります。

$("table#sample").on("click", "a.first_link", function(){
  trid = $(this).closest("tr").attr("id");
  if ( trid.length > 0 )
    alert( "Swap out will come soon." );
});
于 2012-05-06T05:12:14.203 に答える
0

id最初に最も近いものに割り当ててから、tr次のように試す必要があります。

$('#sample tr td a.first_link').click(function () {
 var trid = $(this).closest('tr').attr('id');
 if(trid.length > 0) { alert("Swap out will come soon"); }
});

IDを入力しない場合は、次を試すことができます:

var trid = $(this).closest('tr').attr('id') || '';
于 2012-05-06T05:13:23.867 に答える
0

使ってみましたか、

$('#sample tr td a.first_link').live('click',function...

それ以外の

$('#sample tr td a.first_link').click(function...
于 2012-05-06T05:16:16.067 に答える