有时候会有很多的mouseover事件,而$(“*”)选择器可能很贵。这会减慢我的网页在运行IE6的慢速机器上爬行吗?
有没有更好的方法来做到这一点?我想知道发生在页面上的每个鼠标悬停事件。
有时候会有很多的mouseover事件,而$(“*”)选择器可能很贵。这会减慢我的网页在运行IE6的慢速机器上爬行吗?
有没有更好的方法来做到这一点?我想知道发生在页面上的每个鼠标悬停事件。
只是做$('body')
。这将为<body>
元素分配一个处理程序,并且每个后代元素(因此,页面中的每个元素)都会将其悬停的鼠标悬停事件置于该点。你所需要的处理程序里面做的是检查事件的发起者找到确切的元素:
$('body').mouseover(function(e) {
var sender = e.target;
//sender is the element who was moused over
});
的关键是不要做任何处理程序中过于密集,因为它基本上会被不断的射击用户在您的页面上移动鼠标。最好首先检查可能的最严格条件,并尽可能经常尽早退出方法。
我打算在这里出现一个肢体,并说,看着表情让我的牙齿受伤的方式来看,这实际上可能是不好的做法。
但是,如果你绝对必须知道每一个鼠标悬停,它可能是最好的东西。然而,我会质疑这种需要,并假设你相信它将为你实现的目标可以以优越的方式实现。
你说得对,这很糟糕。然而,没有必要为每个元素分配不同的处理程序,以知道每个元素何时被隐藏。 – 2009-10-05 23:37:49
+1,但请注意,它允许mouseover事件执行'stopPropagation()'(其中'live()'不),所以它可能无法满足了解所有鼠标悬停的需求。 – chaos 2009-10-05 23:40:09
是的。也许假设如果开发人员想要对每个鼠标悬停做出反应,他/她都不会去取消它们:) – 2009-10-05 23:42:37
这不会是开发人员自己的代码,它可能与插件和插件相关这样。 – chaos 2009-10-06 00:28:44