mousedown-event仅在我点击一个元素而不是html元素时才有效。为什么我能做些什么呢?
var curFocus;
$(document.body).delegate('*','mousedown', function(){
if ((this != curFocus) && // don't bother if this was the previous active element
($(curFocus).is('.field')) // if it was a .field that was blurred
) {
$('.' + $(curFocus).attr("id")).removeClass("visible"); // take action based on the blurred element
}
curFocus = this; // log the newly focussed element for the next event
});
答案 0 :(得分:3)
<html>
标记有点笼统,它包含<head>
等不可见元素,请尝试使用<body>
标记。
答案 1 :(得分:2)
<body>
元素位于<html>
元素内,而不是相反。并且您的代码仅响应来自body元素的 children 的鼠标按下事件,甚至不响应<body>
元素本身。有关演示,请参阅http://jsfiddle.net/5T8tW/。
要使代码响应此类事件,请将$(document.body)
更改为$(document)
。如果您不想回复来自<html>
元素但仅包含其子元素的事件,则可以使用$(document.documentElement)
,即<html>
元素。请注意,当事件通过DOM树冒泡时,您的事件处理程序可能会被多次触发;最后使用return false;
来防止这种情况发生。