为什么mousdown对-tag不起作用?

时间:2010-11-17 22:17:43

标签: javascript jquery

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
});

2 个答案:

答案 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;来防止这种情况发生。