$('li:not(#blob)', nav).hover(function() {
// mouse over
clearTimeout(reset);
blob.animate(
{
left : $(this).position().left,
width : $(this).width()
},
{
duration : options.speed,
easing : options.easing,
queue : false
},
function(){
$('#slate').fadeOut('fast', function(){
$('#slate').html($('.stuff1').html()).fadeIn('fast');
});
}
);
});
我一直试图让一个div(没有连接到动画)淡出,在动画发生后获取隐藏div的内容(嵌套在“blob”移动到的li元素内),I我想我在这里正朝着正确的方向前进,但似乎无法使其正常工作。
作为一个jQuery新手,我无法理解为什么在animate函数之后没有进行回调?
编辑:
下面我发布了我正在尝试医生的全部功能。我试图让函数淡出将内容更改为嵌套在每个li中的div的内容。目前我只使用其中一个内容,当我接触它时,我将穿过那座桥。
该函数将blob元素移动到光标悬停在其上的li元素。
js fiddle http://jsfiddle.net/CK2pZ/4/
jQuery(function($) {
$.fn.spasticNav = function(options) {
options = $.extend({
overlap : 0,
speed : 500,
reset : 1500,
color : '#0b2b61',
easing : 'easeOutExpo'
}, options);
return this.each(function() {
var nav = $(this),
currentPageItem = $('#selected', nav),
blob,
reset;
$('<li id="blob"></li>').css({
width : currentPageItem.outerWidth(),
height : currentPageItem.outerHeight() + options.overlap,
left : currentPageItem.position().left,
top : currentPageItem.position().top - options.overlap / 2,
backgroundColor : options.color
}).appendTo(this);
blob = $('#blob', nav);
$('li:not(#blob)', nav).hover(function() {
// mouse over
clearTimeout(reset);
blob.animate(
{
left : $(this).position().left,
width : $(this).width()
},
{
duration : options.speed,
easing : options.easing,
queue : false
},
function(){
$('#slate').fadeOut('fast', function(){
$('#slate').html($('.stuff1').html()).fadeIn('fast');
});
}
);
});
}); // end each
};
})(jQuery);
答案 0 :(得分:0)
我在你的jsfiddle中修改了许多东西只是为了让它工作,包括onload
,以便js可以访问DOM。在您的代码中,您必须确保js在$(document).ready()
之内...之后我做了一些更改:
$(this).children().first().addClass("blobbed");
$('li').removeClass("blobbed");
$(this).addClass("blobbed");
if(!$(this).hasClass("blobbed"))
fadeOut
内容$('li:not(#blob)', nav).on("mouseover", function () {..
代替$('li:not(#blob)', nav).hover(function () {
点击此处查看详细信息并查看其实际效果:
http://jsfiddle.net/fWP5u/2/