0

クラス「ajax_fields」の値を取得しようとしています。ページには複数のテーブルが含まれているため、jQuery の parent() 関数を使用する必要があります。

$(document).ready(function() {

    $('.hide_table').live('click', function() {
        alert($(this).parent(".row").find('.ajax_fields').val());
    });    

}); 

上に私のjQueryコードがあります。

<div id="content">
<div id="id_pages">
    <div class="row">
        <div class="table width_100">
            <input type="hidden" class="ajax_fields" value="title,url" />
            <input type="hidden" class="ajax_table" value="pages" />
            <div class="form_title">
                <h2>Pagina's</h2>
            </div>
            <table cellspacing="0" cellpadding="0">
                <thead>
                    <tr>
                        <td width="10px"></td>
                        <td width="10px"></td>
                        <td>title <a class="hide_table" id="verberg_title">x</a></td>
                        <td>url <a class="hide_table" id="verberg_url">x</a></td>
                    </tr>
                </thead>
            </table>
        </div>
    </div>
</div>

ここに関連する HTML コードが表示されます。クリックすると、「未定義」というアラートが表示されます。私は何を間違っていますか?!

次のオプションも試しましたが、うまくいきませんでした。

$(this).parent(".row").children('.ajax_fields').val();
$(this).closest('.ajax_fields').val();
4

5 に答える 5

0

<input type="hidden" class="ajax_fields" value="title,url" />の祖先ではなく、<a class="hide_table" id="verberg_title">x</a>もちろんその親要素でもありません。家系図のようなもので、遠いいとこが父親になることはありません(まあ、普通はそうではありません)

基本的に、本当の共通の祖先を見つける必要があります。

$(this).closest(".table") // $(this).closest(".row") will also do

...そして、適切な子孫を見つけます:

.find('.ajax_fields')
于 2013-06-11T10:46:04.683 に答える
0

あなたはこれを行うことができます:

$('.hide_table').on('click', function (e) {
    e.preventDefault();   // Cancel the default action (navigation) of the click
    alert($(this).closest('.row').find('.ajax_fields').val());
});
  • $(this)クリックしたリンクが表示されます。
  • closest('.row')'.row'要素自体をテストし、DOM ツリー内のその祖先をたどることによって、セレクターに一致する最初の要素を提供します。
  • find('.ajax_fields').val()入力を見つけてajax_fieldsその値を取得します。
于 2013-06-11T10:41:25.853 に答える
0

.parent()直接の親.children()のみを検索し、直接の子のみを検索します。代わりに.parents()andを使用できます。.find()

$(this).parents(".row").find('.ajax_fields').val();

また、.live()1.7 で廃止され、1.9 で削除されました。.on()代わりに参照してください。

于 2013-06-11T10:41:42.253 に答える
0

から取得するには、親を反復処理して を選択し、その後.hide_tableを実行でき.ajax_fieldsます。.closest()<div class="row">.find()

$(this)
    .closest('.row')
    .find('.ajax_fields')
    .val();

また、非推奨.live()になっているため、今後は使用しないでください。代わりに以下を使用してイベント委任を使用することをお勧めします。.on()

$('#id_pages').on('click', '.hide_table', function(e) {
    e.preventDefault();
    // your code
});

href最後に、アンカーの属性を省略することはお勧めできません。

<a href="#" class="hide_table" id="verberg_title">x</a>
于 2013-06-11T10:43:03.963 に答える