我在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 is
和1. Cant
。
我尝试在同一个函数中使用数组
$("div.something").each(function(index) {
var arr=[]
arr = $(this).find("label.cidForm").html();
alert(arr);
});
不,我会收到包含'未定义'的警告框。在这两种情况下我做错了什么?我只想要一个包含 label.imp 元素内所有值的数组。
这是我为此提出的JSFiddle。 http://jsfiddle.net/WPeKF/1/
答案 0 :(得分: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);
答案 1 :(得分:0)
这应该可以解决问题:
var myArray = $("div.something label.imp").map(function(index) {
return $(this).html();
});