2

Jquery

複数の要素の内部テキストを変更しようとしていますが、デバッグ中には jquery オブジェクトのようには見えませんが、tdこのように見えるはずです(間違っている可能性があります)。this

これを行う正しい方法は何ですか?

$('.leg-number').each(function () {
        this.html('foo');
    });
4

3 に答える 3

10

代わりにこれを試してみてください:

$('.leg-number').html('foo');

これは、目標を達成するためのより短時間で効率的な方法です。明示的な繰り返しなしで、クラス「leg-number」を持つすべての要素の内部htmlを「foo」に設定するようにjQueryに要求するだけです。のような jQuery メソッドのほとんどは要素のセットで機能するため、このような単純なケースで.html()は実際に使用する必要はありません。.each()

バージョンが機能しなかった理由について:jQuery関数で.each()ラップした場合、使用は機能するため、jQueryメソッドを使用できます:this$()

$('.leg-number').each(function () {
    $(this).html('foo');
});

thisコールバック内の変数は DOM 要素であり、この要素をラップする jQuery オブジェクトに変換する.each()必要があります。$(this)回答を更新する前に説明した epascarello による回答の説明を参照してください。

于 2013-05-24T01:16:52.857 に答える
5

のドキュメントを読んでくださいeach()thisjQuery オブジェクト参照ではなく、DOM Html Element ノードです。jQuery に戻すか、innerHTML直接使用することができます。

$(this).html('foo');

また

this.innerHTML = 'foo';

ドキュメント$(this)は、例での使用を示しています。

于 2013-05-24T01:17:17.700 に答える
1

変化する:

this.html('foo');

に:

$(this).html('foo');

jQuery 以外のオブジェクトで jQuery メソッドを使用しようとしています。もちろん、これは表のセルに class があることを前提としています.leg-number

于 2013-05-24T01:17:15.283 に答える