jQuery循环问题

时间:2010-08-06 06:57:27

标签: jquery

我有一个简单的问题。循环遍历多个div和这些div中输入/ textarea的最有效方法。

例如,我有以下HTML

    <div class="formatInput">
        <h4>Section Header</h4>
        <input type="text" class="formatSectionHeader" width="100%"/>
        <h4>Section Content</h4>
        <textarea class="formatSectionContent"></textarea>
        <p style="float:right;"><span class="removeFormatInput">Remove Section</span></p>
    </div>

我创建了一个按钮,允许用户在需要时添加更多.formatInput div。

最后,我有一个刷新按钮,我想循环遍历每个div并按顺序收集输入和textarea控件的值。

5 个答案:

答案 0 :(得分:1)

如果你打电话给$(".formatInput"),它会给你所有带有classInput类的div个。使用.each()遍历它。

$(".formatInput").each(function(){
   // $(this) here will be the current div in the loop.
});

答案 1 :(得分:1)

循环div,然后形成元素:

$('.formatInput').each(function(index) {
  $(':input', this).each(function(index2)) {
    alert(index + '-' + index2 ': ' + $(this).value());
  });
});

答案 2 :(得分:1)

至少值得一提的是,可能正在寻找serialize,尽管我无法肯定地说。我这样说的原因是因为这个措辞。

  

循环遍历每个div并按顺序收集输入和textarea控件的值

就像我说的那样,也许你真的只是在寻找几个each电话。

答案 3 :(得分:0)

您可以使用each循环遍历div中的所有字段,如下所示:

$('.formatInput :input').each(function() {
    alert($(this).value());
});

:input过滤器选择将选择所有输入(在您的情况下为输入类型text和textarea),这些输入位于具有类formatInput的div中,然后each用于循环它们

答案 4 :(得分:0)

以下将创建两个单独的数组。真的取决于你将如何处理数据,以及如何格式化它。 jAndy正好击中头部,但我还不能投票。

var header = new Array();
var content = new Array();

$(".formatInput").each(function(){
    iDex = $(this).index();
    header[iDex] = $(this).children(".formatSectionHeader").val();
    content[iDex] = $(this).children(".formatSectionContent").val();
});