【问题标题】:Is this possible to force execution of .click() for all elements, even those that are underneath?这是否可以强制执行所有元素的 .click() ,即使是那些在下面的元素?
【发布时间】:2011-04-14 06:29:06
【问题描述】:

考虑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 />');
}

如果单击交叉点,则不会调用 .a.click()

是否有任何内置方法可以强制对所有元素执行click(),而不仅仅是顶级元素及其父元素,或者我必须自己实现?

【问题讨论】:

    标签: javascript jquery dom click jquery-events


    【解决方案1】:

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

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

    【讨论】:

    • 我希望找到一个内置的解决方案(我以为我在某个地方看到过,但不记得在哪里)。还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2013-07-25
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多