6

jqueries .each を理解するのに苦労しています。次のコードがあります。

$('#testDiv').each(function(index, domEle){    
    $(this).text(index);
});

および次の HTML

<div id="p18">
    <div class="inner">
        <span>...</span>
        <p class="right">...</p>
        <div id="testDiv"></div>
    </div>
</div>
<div id="p19">
    <div class="inner">
        <span>...</span>
        <p class="right">...</p>
        <div id="testDiv"></div>
    </div>
</div>
<div id="p20">
    <div class="inner">
        <span>...</span>
        <p class="right">...</p>
        <div id="testDiv"></div>
    </div>
</div>

スクリプトを実行すると、テキストが正しく 0 に設定されるため、最初の testDiv でのみ機能しますが、他の testDiv では機能します。

私の全体的な目標は、別の div の高さに基づいて div の高さを設定するスクリプトを作成することです。高さが違うのでループ構造がいいと思います(間違っていなければ?)

jq コードで何が間違っていますか?

4

5 に答える 5

18

#id異なる要素に同じものを使用することはできません。残りの名前を変更してみてください。必要な結果が得られます

またはこれを行います(クラスを追加せずに機能します-よりクリーンなコード)

$('.inner div').each(function(index, domEle){    
    $(this).text(index);
});
于 2012-06-08T12:50:51.743 に答える
6

idセレクターは最大 1 つの要素を返します。

同じ ID を持つ要素を複数持つことはできません。無効な HTML です

これは機能しますが、代わりに HTML を修正する必要があります。

$('div[id="testDiv"]')...

あなたが本当にすべきことは次のとおりです。

<div id="p18">
    <div class="inner">
        <span>...</span>
        <p class="right">...</p>
        <div class="testDiv"></div>
    </div>
</div>
<div id="p19">
    <div class="inner">
        <span>...</span>
        <p class="right">...</p>
        <div class="testDiv"></div>
    </div>
</div>

次に、クラス別に選択します。

$('.testDiv')...
于 2012-06-08T12:51:13.120 に答える
3

それは方法の問題ではありませんeachid複数の要素に同じものを指定しましたが、これはサポートされていません。

代わりにクラスを使用すると、すべての要素を見つけることができます。

デモ: http://jsfiddle.net/Guffa/xaL4n/

于 2012-06-08T12:50:39.153 に答える
1

無効な html があります。ID は一意である必要があります。あなたはに変更する必要がありid="testDiv"ますclass="testDiv"

HTML :

<div id="p20">
    <div class="inner">
        <span>...</span>
        <p class="right">...</p>
        <div class="testDiv"></div>
    </div>
</div>

Javascript :

$('.testDiv').each(function(index, domEle){    
    $(this).text(index);
});
于 2012-06-08T12:52:23.933 に答える
1

html ページで同じ div id を指定することはできません。

<div id="testDiv"></div>

その代わりに、試してみてください

<div class="testDiv"></div>

関数は次のようになります

$('.testDiv').each(function(index, domEle){    
$(this).text(index);

});

于 2012-06-08T12:52:24.340 に答える