我已使用javascript创建了自定义选择,如下所述:http://v2.easy-designs.net/articles/replaceSelect/
关键的想法是选择是由一个包含两个(在我的情况下)
ulNode.onmouseout = function() {
if (ulNode.className.indexOf('selectOpen') !- -1){
selectMe(li[0]);
}
}
即。如果鼠标离开ul,并且ul打开,则应选择第一个元素。这很好,但是当我在li之间移动鼠标时会调用此函数,即使我没有离开包含ul。有什么想法可能会发生吗?
提前致谢!
答案 0 :(得分:3)
mouseover
和mouseout
是错误的事件之王。当您在具有mouseout事件的元素中包含其他元素时,它们经常被触发。您需要mouseleave
和mouseenter
答案 1 :(得分:1)
尝试在mouseout事件之前实现一些延迟,如下所示:
var hover_to = null;
$("ul").mouseover(function() {
window.clearTimeout(hover_to);
// (A) your stuff...
}).mouseout(function() {
hover_to = window.setTimeout(function() {
// (B) your stuff...
},200);
});
这有望处理不需要的原子事件。
请注意(B)
中的范围。