这是否可以强制执行.click()所有元素,甚至是下面的元素?

时间:2010-09-19 06:24:01

标签: javascript jquery dom javascript-events click

考虑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所有元素,而不仅仅是最高元素及其父元素,或者我必须自己实现?

1 个答案:

答案 0 :(得分:1)

我认为你观察到的行为是正确的。当点击最顶层的元素时,下面的元素将不会获得点击事件,尽管它看起来在“点击”区域。作为一种解决方法,您可以手动触发它的点击事件: $('.a').click()

不带参数调用click等同于trigger('click'),它会引发指定的事件。您可以在trigger help topic中找到更多信息。