1

というループ内で使用する jQuery オブジェクトを「キャッシュ」しました$myElement。その上でいくつかのネイティブ JavaScript 関数を使用したいと思います (パフォーマンスを向上させるため)。ただし、以下の私の試みはエラーをスローします (要素は未定義です)。これを達成する方法はありますか?

$myElement.find('span')[0];

$myElement.find('span').get(0);

更新:私がやろうとしているのは次のようなものです:

$myElement.find('span')[0].innerHTML('some text');

それは私にエラーを与えています。

4

3 に答える 3

6

あなたが必要なようです

$myElement.find('span')[0].innerHTML = 'some text';

innerHTML は基本的な DOM 要素の関数ではないためです。

ただし、jQuery を使用して要素を取得し、html 関数も使用する場合は、何も問題はありません。

$myElement.find('span').first().html('some text');

適切な時点で最適化しているとは思いません。

于 2012-10-15T13:53:18.840 に答える
3

.innerHTMLプロパティは関数ではありません。割り当てを使用してコンテンツを設定するだけです。

.innerHTML = "foo";

.innerHTMLただし、jQuery を使用する場合は注意が必要です。そのようなコンテンツをクリアし、そのコンテンツのいずれかに jQuery で割り当てられたデータまたはハンドラーが含まれていると、メモリ リークが発生します。

より安全な方法は、jQuery を使用してコンテンツを更新することです。

.html("foo");
于 2012-10-15T13:53:26.903 に答える
0

次のようにjQueryの「最初の」関数を使用できます。

$myElement.find('span').first();

または、次のように、 jQuery の「eq」関数を使用して、インデックスによって n 番目の子を取得するために使用します。

$myElement.find('span').eq(3);

または、jQuery の「get」関数を使用して、その一致の DOM インスタンスを返すこともできます。

$myElement.find('span').get(2);

この例でわかるように:

于 2012-10-15T13:55:03.507 に答える