相关疑难解决方法(0)

聚焦和模糊jQuery事件而不是冒泡

使用以下html结构:

<div>
<form><span><input></span></form>
</div>
<p>
Run Code Online (Sandbox Code Playgroud)

和以下jquery代码:

$('form').on("focus", function(event) {
    $("p").append("focus no delegation<br>");
})
Run Code Online (Sandbox Code Playgroud)

为什么焦点事件没有到达我的事件处理程序?使用选择器参数绑定事件可以正常工作:

$('form').on("focus", "input", function(event) {
    $("p").append("focus delegation<br>");
})
Run Code Online (Sandbox Code Playgroud)

活动下一个片段的作用,所以焦点事件实际上泡沫......

$('form').on("focus", "span", function(event) {
    $("p").append("focus delegation<br>");
})
Run Code Online (Sandbox Code Playgroud)

两种形式都适用于点击和更改事件:

$('form').on("click", function(event) {
    $("p").append("click no delegation<br>");
})
$('form').on("click", "input", function(event) {
    $("p").append("click delegation<br>");
})
Run Code Online (Sandbox Code Playgroud)

我发现关于焦点事件冒泡的唯一注意事项是相对于我不使用的旧jQuery版本.在这里看到它

编辑1

这很令人困惑......根据jQuery的焦点文档:

焦点事件不会在Internet Explorer中冒泡.因此,依赖于焦点事件的事件委派的脚本将无法跨浏览器一致地工作.但是,从版本1.4.2开始,jQuery通过将焦点映射到其事件委托方法.live()和.delegate()中的focusin事件来解决此限制.

根据jQuery的焦点文档:

当focusin或其中的任何元素获得焦点时,focusin事件将被发送到元素.这与焦点事件的不同之处在于它支持在父元素上检测焦点事件(换句话说,它支持事件冒泡).

对我来说为时已晚还是与另一方相矛盾?

javascript jquery event-handling

12
推荐指数
1
解决办法
8476
查看次数

标签 统计

event-handling ×1

javascript ×1

jquery ×1