3

次のフォームがあるとします。

</p>

​&lt;form id="f">
    <input name="a"/>
    <input name="b"/>
    <div id="sub_part">
        <input name="c"/>
        <input name="d"/>
    </div>
</form>
<form id="e">
    <input name="a"/>
    <input name="b"/>
    <div id="sub_part2">
        <input name="c"/>
        <input name="d"/>
    </div>
</form>

通常、を使用してすべての名前 - >値のペアを取得できます.serialize()。例えば。f次を使用して、フォームから情報を取得できることを知っています。

$('form#f').serialize();

sub_partform の divから name->value のペアが必要な場合はどうすればよいfでしょうか? この場合、jqueryセレクターは何でしょうか? この演習では、html の構造を変更したくありません。

問題が概説されているこのフィドルをチェックしてください:http://jsfiddle.net/gu9XB/4/

サブフォームを選択しようとしている方法が機能していないことに注意してください。

4

5 に答える 5

4

div内の入力をシリアル化するだけです。.sub_part も使用していたので、div を選択していませんでした。すでに ID がある場合は、ID で選択するだけで高速化できます

('#sub_part input').serialize();

これが実用的なフィドルです http://jsfiddle.net/gu9XB/21/

于 2012-06-28T16:26:37.263 に答える
2

これを使って :

$('#but1').click(function() {
    var data = $('form#f').serialize();
    alert(data);
});

$('#but2').click(function() {
    var data = $('#f #sub_part *').serialize();
    alert(data);
});​

デモはこちら

于 2012-06-28T16:23:48.607 に答える
1

あなたの場合に動作する次のコードを使用してください

 $('#f #sub_part input').serialize();
于 2012-06-28T16:22:18.620 に答える
1

他の回答で述べたように、serialize() メソッドは div に対して機能しません。これを回避する方法は、それが機能する jQuery オブジェクトを作成し、選択した要素をこれに追加することです。

var data = $('<form>').append($('form#f .sub_part')).serialize();
于 2012-06-28T16:24:30.570 に答える
0

この CSS セレクターを使用する

$('#e > div')

sub_partこれでdivが選択されます。フォーム要素の直接の子であるため、一致が発生します。その中にネストされた div がある場合、sub_part影響はありません。

また、sub_part を持つ繰り返し ID があります。ID をクラスに変更するか、いずれかの ID の名前を変更する必要があります。

http://jsfiddle.net/dceast/gu9XB/15/

于 2012-06-28T16:04:30.077 に答える