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つのアラートが表示されると思いました。1つはで0. This is, Nooo, Sparta, Right ?、もう1つは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/

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 に答える