このWebページで特定の要素をクリックしたときに強調表示したいのですが、ページの他の場所をクリックすると、これらの要素のすべてが強調表示されなくなります。
私は次の方法でこのタスクを実行しましたが、1つ(以下で説明)を除いて問題なく動作します。
$(document).click(function() {
// Do stuff when clicking anywhere but on elements of class suggestion_box
$(".suggestion_box").css('background-color', '#FFFFFF');
});
$(".suggestion_box").click(function() {
// means you clicked on an object belonging to class suggestion_box
return false;
});
// the code for handling onclicks for each element
function clickSuggestion() {
// remove all highlighting
$(".suggestion_box").css('background-color', '#FFFFFF');
// then highlight only a specific item
$("div[name=" + arguments[0] + "]").css('background-color', '#CCFFCC');
}
要素の強調表示を強制するこの方法は、新しいページをロードせずにページにhtmlを追加するまでは正常に機能します。これは、.append()および.prepend()によって実行されます。
デバッグから私が疑ったのは、ページが動的にページに追加された新しい要素を「認識」していないということでした。適切なクラス名/ID/名前/onclicksectを持つ新しい動的に追加された要素にもかかわらず、それらは他の要素のように強調表示されることはありません(これらは常に正常に機能し続けます)。
動的に追加されたコンテンツに対して私のアプローチが機能しない理由として考えられるのは、ページの読み込み中に存在しなかった要素をページが認識できないことであるかどうか疑問に思いました。そして、これが可能である場合、ページロードなしでこれを調整する方法はありますか?
この推論の行が間違っている場合、上記のコードはおそらく私のWebページの何が悪いのかを示すのに十分ではありません。しかし、私はこの考え方が可能かどうかに本当に興味があります。