1

申し訳ありませんが、私は jQuery の初心者で、stackoverflow の初心者です。これらの DOM 要素との違いを理解するのは難しいです。エレメント内のinnerHTMLを変更したいのです<p>が、おかしなことが起きてしまいました..

例えば

html コード:

<div id='main-content'> 
    <p id='p0'>0</p>
    <p>0</p>
</div>

js コード:

var p=$('#main-content').children('p');

$('#p0').html('100');
p[1].html('100');

1枚目と2枚目のinnerHTMLを変更したい

要素を 0 から 100 に変更しましたが、2 番目のメソッド p[1].html('100') は機能しません...そしてコンソールは TypeError: p[1].html は関数ではないと言いました。助けてください、Firebug は、$('#p0') は [オブジェクト オブジェクト] であり、p[1] は [オブジェクト HTMLParagraphElement] であると教えてくれました。違いを説明してもらえますか。TAT に感謝します

4

3 に答える 3

4

これp[1]は、 が と同様p.get(1)に DOM 要素を返すためです。

eqを使用1して、セット内のインデックスにある jQuery オブジェクトを取得します。

p.eq(1).html('100');
于 2013-10-05T17:07:18.063 に答える
0
//For First Paragraph with id 'p0';
$('#main-content').find("#p0").html("100");

//For second Paragraph;
$($('#main-content p')[1]).html("100");
于 2013-10-05T17:11:17.730 に答える
0

jQuery は、n 番目の子セレクターもサポートしています。したがって、そのオプションもあります。フィドル

$("#main-content p:nth-child(2)").text("100");

dystroy が言ったように、jQuery 配列にアクセスすると DOM 要素が返されます。eq のようなヘルパーを使用するか、DOM 要素を再度ラップして別の jQuery オブジェクトを作成することができます。たとえば、元のコードを修正するには、次のようにします。

var p=$('#main-content').children('p');
$(p[1]).html('100');

編集:質問を読み直しましたが、両方の段落要素の内容を更新したいようです。この場合、さらに単純になります。

$("#main-content p").text("100");

jQuery は、選択したすべてのオブジェクトに作用します。jQuery がcss セレクターを使用する方法についてお読みください。

于 2013-10-05T17:30:02.837 に答える