我的jQuery代码是:
$(document).ready(function () {
$('.selector').mouseenter(function () {
$(this).find('> ul').slideToggle('fast');
});
$('.selector').mouseleave(function () {
$(this).find('> ul').slideToggle('fast');
});
});
在工作中:
http://jsfiddle.net/Reuben/Au7LA/1/
我的代码有效,但如果您不小心,可以快速攻击打开关闭面板。那么有没有延迟,或者更确切地说有什么可以防止这种情况发生?
答案 0 :(得分:4)
$(document).ready(function () {
$('.selector').mouseenter(function () {
$(this).find('> ul').stop().slideToggle('fast');
});
$('.selector').mouseleave(function () {
$(this).find('> ul').stop().slideToggle('fast');
});
});
也许可能对debouncing插件有用http://benalman.com/code/projects/jquery-throttle-debounce/docs/files/jquery-ba-throttle-debounce-js.html
$(document).ready(function () {
var toggle = function (show) {
return function () {
var $el = $(this);
var isHovered = $el.is(':hover');
var animation = show && isHovered ? 'slideDown' : 'slideUp';
$el.children('ul').stop()[animation]('fast');
};
}
var mouseenter = $.debounce(400, toggle(true));
var mouseleave = toggle(false);
$('.selector')
.on('mouseenter', mouseenter)
.on('mouseleave', mouseleave);
});
答案 1 :(得分:0)
你可以试试这个:
$(document).ready(function () {
$('.selector').mouseenter(function () {
$(this).find('> ul').hide().slideDown('fast');
});
$('.selector').mouseleave(function () {
$(this).find('> ul').hide().slideUp('fast');
});
});