1

我有一个这种形式的大文件[整个类似的 div]。我希望能够选择 a div,找到其中的ul's 数量并遍历它们中的每一个以获取其中每个的值li

<div class="experiment">
   <div class="experiment-number">5</div>
   <ul class="data-values">
         <li><div></div> 14</li>
         <li><div></div> 15</li> 
   </ul>
   <ul class="data-values">
        <li><div></div> 16</li>
   </ul> 
</div>

我尝试循环遍历所有的实验div,然后选择uls,但它选择ul了页面中的所有内容,而不仅仅是 current 下的内容div

$('experiment ul').eq('$i');
4

4 回答 4

4

您的 HTML 当前不正确,因为您只是开始新<div><ul>元素而不是关闭现有的元素。忽略这一点,因为修复起来很简单,我们将继续讨论真正的问题。

您需要选择所有<div class="experiment">元素,然后遍历它们。为此,您可以使用该.each()功能。它可能看起来像这样:

var experiments = $('.experiment'); // all of them

experiments.each(function(i, val) { // will iterate over that list, one at a time
    var experiment = $(this); // this will be the specific div for this iteration
    console.log("Experiment: " + experiment.find('.experiment-number').text());
    // outputs the experiment number
    console.log("Experiment ULs: " + experiment.find('ul').length);
    // number of <ul> elements in this <div>
    var total = 0;
    experiment.find('ul.data-values li').each(function() {
        total += parseInt($(this).text(), 10);
    });
    console.log("Experiment total: " + total);
    // outputs the total of the <li> elements text values
});

看看这个 jsFiddle 演示

于 2013-05-01T09:36:37.847 回答
0

获取 div.experiment 中的所有 ul

var ul = $('.experiment').find('ul');

并获取上面找到的每个 ul 中的所有 li 元素

ul.each(function(list) {
 var li = $(list).find('li');
});
于 2013-05-01T09:34:30.160 回答
0
$('.experiment').each(function() {
    var cnt = $(this).children('ul').length;
    $(this).find('.experiment-number').text(cnt);
});
于 2013-05-01T09:35:13.063 回答
-1

首先,您需要为每个 DIV 制定正确的选择器。

您想要的选择器是:

".experiment"

注意.表示类选择器。

这将允许您访问每个 DIV 元素。如果你想循环这些中的每一个,你可以这样做:

$(".experiment").each(function(){
   var div = $(this);

   var elementsInThisDiv = div.find("ul");
   //you now have a list of all UL elements in the current DIV only

   var numberOfElements = elementsInThisDiv.length;
   //you now have a count of UL elements belonging to this DIV only

   //you can loop the UL elements here
   $(elementsInThisDiv).each(function(){
       var ul = $(this);
       //do something with the UL element

       //like get the LI elements...
       var liElements = ul.find("li");
   });
});

重要提示:您的 HTML 也存在错误,您需要<ul>使用正确关闭元素</ul>

于 2013-05-01T09:31:36.707 回答