我有一个 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 元素到分配的委托对象(在本例中为文档)?如果是这种情况,那么我需要像这样处理委托:
$('.myDiv').click(function(e) {
//...as before
});
但是这种方式违背了委托的目的,因为我现在必须有很多“myDiv”处理程序,可能还有其他......只有一个“文档”事件委托对象非常容易。
任何人都知道这是如何工作的?