0

module_id[]次の HTML マークアップでは、スパン クラスをクリックして、名前を持つ入力フィールドの値を取得する方法を教えて.clickください。

HTML:

<div class="module">
    <div class="info">..</div>
    <div class="ctrl"><span class="click">Click</span></div>
    <input type="hidden" value="module1" name="module_id[]" /> 
    <input type="hidden" value="title" name="module_title[]" />
</div>

私はこれを試しました:

jQuery:

$('.module').on('click','.click',function(){
     var target_module = $(this).parent();
     var module_id = target_module.find('input[name=module_id\\[\\]]').val();

    alert(module_id);

 });

デモ: http://jsfiddle.net/FKdNJ/

4

5 に答える 5

2

$(this).parent();<div class="ctrl">代わりに

を使用することもできます$(this).parent().parent()が、より柔軟な解決策はclosest()代わりに使用することです。

$(this).closest('.module');

ここでこれが機能していることを確認できます。http://jsfiddle.net/FKdNJ/5/


FWIW、アプローチを完全に変更して、要素を直接e.delegateTarget取得するために使用することもできます ( http://jsfiddle.net/FKdNJ/7/ );.module

$('.module').on('click','.click',function(e){
     var target_module = $(e.delegateTarget);
     var module_id = target_module.find('input[name=module_id\\[\\]]').val();

     alert(module_id);
});
于 2013-08-24T18:16:08.670 に答える
1

これを試してください。可能であれば、html 5 の data- 属性を使用したほうがよいでしょう。

$('span.click').click(function(){     
    var moduleId = $(this).closest("div.module").find("input[name='module_id[]']").val()
    alert(moduleId);
 });
于 2013-08-24T18:28:52.423 に答える
1

と:

$('input[name="module_id[]"').val();

jsFiddle の例 1

$('.module').on('click', '.click', function () {
    console.log($('input[name="module_id[]"').val());
});

このコード ブロックのセットが複数ある場合は、次を使用します$(this).closest('.ctrl').next().val()

次のように:

$('.module').on('click', '.click', function () {
    console.log($(this).closest('.ctrl').next().val());
});

jsFiddle の例 2

于 2013-08-24T18:15:52.093 に答える
1

これを試して

$('.module').on('click','.click',function(){
    alert($(this).closest('.module').find('[name="module_id[]"]:first').val())
 });

http://jsfiddle.net/FKdNJ/3/

于 2013-08-24T18:16:01.217 に答える
0

フィドルに回答を追加しました:

$('.click').on('click',function(){
     alert($('input[name=module_id\\[\\]]').val());
})

http://jsfiddle.net/FKdNJ/6/

于 2013-08-24T18:20:06.057 に答える