私はdivを持っています
<div class="myDiv">
<a href="#" class="myLink">somelink</a>
<div class="anotherDiv">somediv</div>
</div>
ここで、イベント委任とバブリングの概念を使用して、myDiv、myLink、anotherDiv のいずれかからのクリックをインターセプトしたいと考えています。
ベスト プラクティスによると、これは、ドキュメント自体でグローバルにクリックをリッスンすることで実行できます (したがって、「委任」という用語が使われます)。
$(document).click(function(e) {
var $eventElem = $(e.target);
var bStopDefaultClickAction = false;
if ($eventElem.is('.myDiv'))
{
alert('Never alerts when clicking on myLink or anotherDiv, why????');
bStopDefaultClickAction = true;
}
return bStopDefaultClickAction;
});
上記のアラートの質問を参照してください。クリックバブルという印象を受けました。そして、ドキュメントが実際に私のクリックを受け取り、委任を開始するため、多少そうです。しかし、myLink と anotherDiv のクリックのバブリング メカニズムは、if ステートメントが作動しないため、機能していないようです。
それとも、次のようなものですか: クリックすると、クリックされた src 要素から割り当てられた委譲オブジェクト (この場合はドキュメント) まで、1 ステップだけバブルしますか? その場合、次のように委任を処理する必要があります。
$('.myDiv').click(function(e) {
//...as before
});
しかし、多くの 'myDiv' ハンドラーとおそらく他のハンドラーが必要になるため、この種の委任の目的は無効になります... 'document' イベント委任オブジェクトを 1 つだけ持つのは非常に簡単です。
誰でもこれがどのように機能するか知っていますか?