次のコードを実行すると、a 要素が div 要素内にあるため、予想どおり 1 が返されます。
HTML:
<div class=".holder">
<a href="#" class=".link">a</a>
</div>
jQuery:
$(document).click(function (e) {
alert($(e.target).closest(".holder").length);
});
ここで、a 要素自体を含む div 要素を再設定する必要がある a 要素の内部では、次のようになります。
$(".link").on("click", function (e) {
e.preventDefault();
$(".holder").html("some html");
});
問題は、ドキュメントのクリックが a 要素のクリックの後に発生するため (理にかなっています、階層)、a 要素をクリックすると、1 ではなく 0 を取得します。これは、a 要素の親がもう存在しないためです。それ自体はメモリ内にのみ存在します。
要素のクリック自体をチェックせずにこれを解決する方法はありますか?