【发布时间】:2011-04-06 15:00:33
【问题描述】:
我知道调用 jQuery 事件 $(selector).blur(); 将调用 trigger 并运行模糊事件处理程序。
这是否会在页面上提供任何其他元素,例如文档、正文、焦点?
注意虽然这看起来相当简单,但我还没有找到有关 jQuery API 或 SO 或 Google 的详细信息。
【问题讨论】:
-
查看我的编辑。在 IE 中就不一样了。
我知道调用 jQuery 事件 $(selector).blur(); 将调用 trigger 并运行模糊事件处理程序。
这是否会在页面上提供任何其他元素,例如文档、正文、焦点?
注意虽然这看起来相当简单,但我还没有找到有关 jQuery API 或 SO 或 Google 的详细信息。
【问题讨论】:
我认为它不会给任何其他元素带来焦点。它似乎只是完全转移了注意力(实际上,不在 IE 中查看我的编辑)。我按照这些思路连接了一个 jsfiddle example:
HTML
<div id="test">
<input id="test2" />
<input id="test3" />
<input id="test4" />
</div>
JavaScript
$(function() {
$('*').focus(function() {
alert(this.id);
});
$('input').keypress(function(evt) {
if (evt.which == '13') {
$(this).blur();
evt.preventDefault();
}
});
});
基本上,它会在任何元素获得焦点时发出警报,并且当您在任何输入框中按 Enter 时,它会调用 .blur()。在 Opera 中,当这种情况发生时,没有其他元素获得焦点。在 Firefox 中,警告框将焦点从元素上移开,因此您需要使用 console.log() 而不是 alert(),但它的作用方式相同。
编辑
我在 IE 中检查了它,似乎焦点已更改为 body 元素。如果你有 alert(this); 而不是 alert(this.id); 它表示当输入丢失时 body 元素会获得焦点。
【讨论】: