私はthis pageを持っています。ページの右側に記載されているさまざまなマーカーを使用して、ページ上のさまざまなテキスト領域を強調表示できます。動的に追加された子要素に作用しないクリックイベント
エリアにマークするたびに、span
がマーカーのクラスとともに追加されます。右から黄色のマーカーを使用するとします。強調表示された領域は、次のスパンタグを使用してカバーされます。 <span class="mark1">[ highlighted text ]</span>
。
私がしたいことは、ユーザーがこのスパンタグをクリックするたびに、単に境界線を変更したいときだけです。しかし、どういうわけか私はこれを達成することができません。
ここに私がしていることがあります。
$("#sachverhalt").find("span").on("click","span[class='mark1'],span[class='mark2'],span[class='mark3'],span[class='mark4'],span[class='mark5']",function(){
$(this).css('border',"1px solid #000000");
});
EDIT:
とタグの構造は次のようになります。
<div id="sachverhalt">
<article>
<p>
<span>
[some random text]
<span class="mark1">
[highlighted text]
</span>
[some random text]
</span>
</p>
</article>
</div>
<span class='mark1'><span>
タグは、ユーザーが強調表示したときに動的に追加されます。
誰もこのイベントが呼び出されていない理由を教えていただけますか?
問題は、私が '$(document)'を使用した場合、同じタグとクラス名を持っているため、ページの右側に表示されているマーカーでも機能します。これは、なぜ$( '#sachverhalt') 'を使ってその中の要素にクリックイベントしか割り当てられていないのかという理由です。私は何を意味するのですか? – Mj1992
$( "#sachverhalt")で動作しますon( "click"、...); .on()の前に既存のスパンをフィルタ処理しないでください。 – Thomas