3

次のHTMLスニペットを含むリピーターがあります。

<div id='parent'>
    <div id='child1'/>
    <div id='child2'>
         <script type="text/javascript" src="script.js"></script>
    </div>
</div>

script.js内の関数を使用して、「parent」とタグ付けされたdivを選択し、divの内部HTMLをID「child1」で設定したいと思います。

私の最終的なhtmlは次のようになります。

<div id='parent'>
    <div id='child1'>This inner text was set by jQuery</div>
    <div id='child2'>
        <script type="text/javascript" src="script.js"></script>
    </div>
</div>

jQueryを使用してそれを行うにはどうすればよいですか?

4

3 に答える 3

2
$('#parent').children('#child1').html('html goes here');
于 2009-07-30T15:22:04.700 に答える
2

まず、リピーターでこのようにHTMLをコーディングすることはできません。ページ上の複数の要素に同じIDを割り当てることはできません。HTMLを識別する場合は、識別にクラスを使用する必要があります。

<div class="parent">
  <div class="child1"><div>
  <div class="child2">Click Me<div>
</div>

スクリプトタグ内の関数には、他のすべてと比較してDOM内のどこにあるかを知る方法がありません。相対的なDOM関係を導出できるようにするには、関数の呼び出しをいくつかの要素に関連付ける必要があります。最も簡単な方法は、jQuery(または他のフレームワーク)を使用して要素にハンドラーを追加することです。

$(function() {
    $('.child2').click( function() {
        $(this).parent().find('.child1').html( 'some html' );
    });
});

上記は、クラスchild2を持つ各DIVにクリックハンドラーを追加し、クリックすると、その親DIV(親ではクラスは不要であることに注意)を見つけ、次にそのクラスに基づいてHTMLを更新する正しい子を見つけます。 また、上記のスクリプトは、リピーター項目ごとに1回ではなく、1回だけページに追加する必要があることに注意してください。

于 2009-07-30T15:24:31.840 に答える
0

あなたの質問はあまり意味がありません。あなたはこれを行うことができます:

$("#child1").html("blah");

#parentまたはへの参照は必要ありませんthis

しかし、そうではなかったと仮定すると、次の要素に関連する要素を見つける方法は複数ありますthis

$(this).children("#child1")

また

$(this).find("#child1") // descendant, not just child

また

$("#child1", this) // descendant, not just child
于 2009-07-30T15:31:44.480 に答える