jquery .each在另一个.each电话 - 如何

时间:2012-03-05 17:20:26

标签: jquery html-lists each

我有一个类似html的结构[列表中的列表]:

<ul class="outer" >
  <li><input type="text" class="outer_name" value="outer_name"></li>
  <ol class="inner">
    <li><input type="text" value="inner1"><input type="checkbox"></li>
    <li><input type="text" value="inner2"><input type="checkbox"></li>
    <li><input type="text" value="inner3"><input type="checkbox"></li>
  </ol>
</ul>

我在页面上翻了多个这些。 我试图指定对于每个“外部”元素,我想提醒()如下:

"outer_name" + "inner1:checked" + "inner2:unchecked" + "inner3:checked"

我一直在使用嵌入式.each函数,但我似乎无法确定它。

任何帮助表示赞赏....

3 个答案:

答案 0 :(得分:2)

您的HTML无效。 ul个元素不能直接包含ol个元素。 only valid child elements of ulli个元素。

如果您修复它:

<ul class="outer" >
  <li><input type="text" class="outer_name" value="outer_name">
    <ol class="inner">
      <li><input type="text" value="inner1"><input type="checkbox"></li>
      <li><input type="text" value="inner2"><input type="checkbox"></li>
      <li><input type="text" value="inner3"><input type="checkbox"></li>
    </ol>
  </li>
</ul>

......然后基本上:

$(".outer > li").each(function() {
    $(this).find(".inner > li").each(function() {
    });
});

答案 1 :(得分:1)

我对此进行了测试并且有效:

var items = $(".outer .inner li");
var output = "outer_name - ";
for (var i = 0; i < items.length; i++) {
  var elem = $("input[type=checkbox]", items[i]);
  if( $(elem).is(":checked") ) output += "" + $(elem).prev().val() + ":checked + ";
  else output += "" + $(elem).prev().val() + ":unchecked + ";
}

alert( output );

答案 2 :(得分:1)

这将为您提供一个良好的开端并帮助您了解如何在另一个中使用$.each 编辑:小提琴链接不正确 演示:http://jsfiddle.net/fMcSz/2/

$('.outer').each(function() {
    var alertMsg = [$(this).find('.outer_name').val()];
    $(this).find('input:checkbox').each(function() {
        var checkText = ' ' + $(this).prev().val() + ': ';
        checkText += (this.checked) ? 'checked' : 'unchecked';
        alertMsg .push( checkText);

    });
    alert(alertMsg.join(',  '))
});