考虑this code:
HTML:
<div class='a'>a</div>
<div class='b'>b</div>
<div id='log'></div>
CSS:
.a, .b {
width: 100px;
height: 100px;
border: 1px solid black;
position: absolute;
text-align: right;
}
.a {
left: 100px;
top: 100px;
}
.b {
left: 150px;
top: 150px;
}
JS:
$('*').click(function(e) {
log(this.nodeName + ' ' + this.className);
});
function log(s) {
$('#log').append(s + '<br />');
}
如果点击了交叉点,则不会调用.click()
的{{1}}。
是否有任何内置方法强制执行.a
所有元素,而不仅仅是最高元素及其父元素,或者我必须自己实现?
答案 0 :(得分:1)
我认为你观察到的行为是正确的。当点击最顶层的元素时,下面的元素将不会获得点击事件,尽管它看起来在“点击”区域。作为一种解决方法,您可以手动触发它的点击事件:
$('.a').click()
。
不带参数调用click
等同于trigger('click')
,它会引发指定的事件。您可以在trigger help topic中找到更多信息。