1

jQuery(AJAX)を使用してデータをロードしています。これはテーブルにロードされています(したがって、これはページのロード後に行われます)。

テーブルの各行には「選択」リンクがあり、ユーザーはテーブルから行を選択できます。次に、この行の情報を取得して、ページのさらに下のフォームに配置する必要があります。

$('#selection_table').on('click', '.select_link', function() {
    $('#booking_address').text = $(this).closest('.address').text();
    $('#booking_rate').text = $(this).closest('.rate').val();
});

私が理解しているように、「最も近い」関数はDOMツリーをトラバースするため、リンクは各行の最後のセルにあるため、前の行から要素「アドレス」と「レート」を取得する必要があります(クラスはに割り当てられます正しいセル)。

多くのバリエーションで迅速で汚い 'alert($(this).closest(etc...') を使用して自分自身をデバッグしようとしましたが、何も機能していないようです。

元のページの読み込み後に読み込まれたデータを対象にするために、別のことを行う必要がありますか? どこが間違っていますか?

4

3 に答える 3

2

.closest()あなたは、どのように機能するかについて間違った仮定をしてい.text()ます。疑わしい場合は、ドキュメントをよく調べる習慣をつけてください。ドキュメントには、jQueryの機能の使用方法に関する明確な説明と例が記載されています。

  • .closest()指定された要素の親をトラバースし、指定したセレクターと一致させようとします。あなた.select_linkが「内部」にいない場合.address、あなたのコードは機能しません。

  • また、.text()これはプロパティではなくメソッドです(メソッドは実際にはJavascriptのプロパティであるため、意味的には)。x.text = 1;この要素のメソッドをオーバーライドするだけですが、これはお勧めできません。メソッドを呼び出す必要がありますx.text(1);

これらの線に沿った何かが機能する可能性があります:

var t = $(this).closest('tr').find('.address').text();
$('#booking_address').text(t);

#booking_addressがフォーム要素の場合は、.val()代わりにそれを使用してください。

それが機能しない場合は、使用しているHTML構造を提供してください(質問を編集し、jsFiddleまたは同様のサービスを使用してください)。私がお手伝いします。このような質問をするときは、とにかく関連するHTML構造を提供するのが良い習慣です。

于 2013-02-22T11:49:29.243 に答える
0

parent() および find() 関数を使用して、データを直接見つけることができます。parent() および find() メソッドの量は、HTML によって異なります。

元。前の行データを取得するには

$('#selection_table').on('click', '.select_link', function(){ 
     $('#booking_address').text = $(this).parent().parent().prev().find('.address').text();
});

ここで、parent は親要素 (tr) を表し、prev() を前の行として検索し、要素を見つけます。

于 2013-02-22T11:50:36.170 に答える
-1

どこかにコードのデモがありますか?コードをいつ呼び出すかを確認してください。これは、AJAX呼び出しの「成功」の後にある必要があります。

于 2013-02-22T11:48:36.247 に答える