3

我在 jQuery 中使用 $.find() 方法,但无法获得与选择器条件匹配的所有结果。

这是我的 HTML

<div class="something">
<label> Hello </label>
<div class="selse">
    <label> Hi </label>
    <label class="imp"> This is </label>
    <label class="imp"> Nooo </label>
</div>
<label class="imp"> Sparta </label>
<label class="imp"> Right ? </label>
</div>

<div class="something">
<label> Hell No </label>
<div class="selse">
    <label> Hi </label>
    <label class="imp"> Cant </label>
</div>
<label class="imp"> touch </label>
<label class="imp"> this </label>
 <label class="imp"> MC  </label>
</div>​

所以当我做以下JS

$("div.something").each(function(index) {
   alert(index + ': ' + $(this).find("label.imp").html())
    });​

我预计它会给我 2 个警报。一个与0. This is, Nooo, Sparta, Right ?另一个与1. Cant, touch, this, MC。但我得到了只是0. This is1. Cant

我尝试在这样的同一函数中使用数组

$("div.something").each(function(index) {
    var arr=[]
    arr = $(this).find("label.cidForm").html();
    alert(arr);
    });​

不,我会收到带有“未定义”的警报框。在这两种情况下我做错了什么?我只想要一个包含label.imp元素内所有值的数组。

这是我提出的相同的 JSFiddle。http://jsfiddle.net/WPeKF/1/

4

2 回答 2

11

.html()和其他 getter 方法只返回第一个匹配元素的值。考虑到这一点,我认为您可以弄清楚需要进行的逻辑更改。

小提琴:http: //jsfiddle.net/WPeKF/2/

代码:

var arr = $("div.something").map(function(){
    return $(this).find("label.imp").map(function(){
        return $(this).html();
    }).get().join("");        
}).get();
console.log(arr);
于 2012-11-07T21:58:18.960 回答
0

这应该可以解决问题:

var myArray = $("div.something label.imp").map(function(index) {
    return $(this).html();
});​
于 2012-11-07T22:02:14.493 回答