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_part表单中的 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_partdiv。匹配发生是因为它是表单元素的直接子元素。如果有一个 div 嵌套在sub_part其中,则不会受到影响。

此外,您还有一个带有 sub_part 的重复 ID。您应该将 id 更改为一个类或更改其中一个 id 的名称。

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

于 2012-06-28T16:04:30.077 回答