を使用してハイパーリンクをクリックできないという問題がありますon()。Stackoverflow で調査しましたが、まだ答えが見つかりません。
コードは次のようになります。
$(document).ready(function() {
$(document).on('click', '.spoiler > a', function(e)
{
e.preventDefault();
return false;
});
});
その後、次のようにリンクが追加されます。
$("#chatContainer").append("<div class='spoiler'><a href='blah'>lorem ipsum</a></div>");
しかし、リンクをクリックすると、リンクは引き続きたどられます。clickハンドラがまったく呼び出されていないことが原因であることを確認しました。$(document).ready()また、関数が呼び出されていること、および要素が追加された後に要素が$('.spoiler > a')正しく選択されていることも確認し<a>ました。
では、なぜうまくいかないのでしょうか!? on()後で追加されたものであっても、そのセレクターに一致するすべての要素にバインドすることは想定されて いませんか?
[編集]要素の中にコードを入れると、動作しonclickます :<a>
$("#chatContainer").append("<div class='spoiler'><a href='blah' onclick='return doNothingWhenClicked();'>lorem ipsum</a></div>");
...
function doNothingWhenClicked()
{
return false;
}
on()では、 !を使用すると機能しないのはなぜですか?