リピーター内に子DIVのテキストを設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1207312

  •  05-07-2019
  •  | 
  •  

質問

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

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

「parent」というタグが付いたdivを選択したいscript.js内の関数を使用し、divの内部HTMLをid&quot; child1&quot;で設定します。

最終的な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を使用してどうすればよいですか?

役に立ちましたか?

解決

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

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

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

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

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

他のヒント

$('#parent').children('#child1').html('html goes here');

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

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

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

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

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

または

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

または

$("#child1", this) // descendant, not just child
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top