Javascript jquery如何在子表单div中选择表单元素

Javascript jquery如何在子表单div中选择表单元素,javascript,jquery,forms,selector,subform,Javascript,Jquery,Forms,Selector,Subform,假设我有以下表格: ​ 如果只需要表单f中sub_part div的名称->值对呢?在这种情况下,jquery选择器是什么?对于本练习,我不想更改html的结构 请查看这把提琴,我在这里列出了问题: 请注意,我尝试选择子窗体的方式不起作用。使用此CSS选择器 $('#e > div') 这将选择sub_part div。匹配发生是因为它是form元素的直接子元素。如果sub_零件中嵌套有div,则不会受到影响 此外,您还有一个带有sub_part的重复id。您应该将id更改为类或更改其中

假设我有以下表格:

如果只需要表单f中sub_part div的名称->值对呢?在这种情况下,jquery选择器是什么?对于本练习,我不想更改html的结构

请查看这把提琴,我在这里列出了问题:

请注意,我尝试选择子窗体的方式不起作用。

使用此CSS选择器

$('#e > div')
这将选择sub_part div。匹配发生是因为它是form元素的直接子元素。如果sub_零件中嵌套有div,则不会受到影响

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

使用以下代码 在你的情况下会有用的

 $('#f #sub_part input').serialize();
使用以下命令:

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

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

以下是其他答案中所述的

,serialize方法对div不起作用。解决方法是创建一个它将处理的jQuery对象,并将所选元素附加到此对象:

var data = $('<form>').append($('form#f .sub_part')).serialize();

只需序列化div内的输入。您还使用了.sub_部分,因此它没有选择div。如果已经有一个ID,您可以通过ID选择,以加快速度

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

这里有一个可用的小提琴

在JSFIDLE示例中,这个方法对我不起作用。如果您认为它可以工作,那么请使用我提供的JSFIDLE发布一个工作示例。您应该在表单、输入、文本区域上序列化,或者选择非子div,因此需要对其进行分解。这里是JSFIDLE,即使您在两种表单中都有相同的id,但当它说“序列化”时,jQuery文档会让人困惑。serialize对表示一组表单元素的jQuery对象进行操作。事实并非如此,作为容器,官方唯一支持的元素是表单。也许他们会修好这些文件。请参阅相关内容。既然已经给出了ID并且速度快得多,为什么还要使用“表单”选择器?是否也使用f sub_零件?您只需使用ID“sub_part”,这是选择元素的最快方法
var data = $('<form>').append($('form#f .sub_part')).serialize();
('#sub_part input').serialize();