说我有以下表格:
<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()
获取所有name-&gt;值对。例如。我知道我可以使用以下方式从f
获取信息:
$('form#f').serialize();
如果只需要sub_part
格式f
div中的name-&gt;值对,该怎么办?在这种情况下,jquery选择器会是什么?对于本练习,我不想改变html的结构。
如果我遇到问题,请查看这个小提琴:http://jsfiddle.net/gu9XB/4/
注意方法我试图选择子表单不起作用。
答案 0 :(得分:4)
只需序列化div中的输入。你也使用.sub_part所以它没有选择div。如果已有ID,您只需按ID选择即可使其更快
('#sub_part input').serialize();
这是一个工作小提琴http://jsfiddle.net/gu9XB/21/
答案 1 :(得分:2)
使用此:
$('#but1').click(function() {
var data = $('form#f').serialize();
alert(data);
});
$('#but2').click(function() {
var data = $('#f #sub_part *').serialize();
alert(data);
});
以下是DEMO
答案 2 :(得分:1)
使用以下代码 它适用于你的情况
$('#f #sub_part input').serialize();
答案 3 :(得分:1)
如其他答案所述,serialize()方法不适用于div。解决这个问题的方法是创建一个可以处理的jQuery对象,并将所选元素附加到此:
var data = $('<form>').append($('form#f .sub_part')).serialize();
答案 4 :(得分:0)
使用此CSS选择器
$('#e > div')
这将选择sub_part
div。匹配发生是因为它是表单元素的直接子元素。如果sub_part
内嵌有div,则不会受到影响。
你也有一个带sub_part的重复id。您应该将id更改为类或更改其中一个ID的名称。