2012-03-09 134 views
0

我在Forrst上问了这个问题并收到两个代码响应。一个工作,一个没有。我希望有人能够向我解释为什么第二个不起作用。jQuery淡入淡出,动画和切换?

我的目标是默认情况下隐藏我的搜索。当你点击一个搜索图标时,它会切换搜索淡入,稍微向左移动。如果再次点击搜索图标,它会淡出并移动到右侧。

这里是工作的代码:

$(function() { 
    var search = $('#searchform'); 
    search.css('opacity', 0); 

    $('#search-img').toggle(function() { 
    search.animate({opacity: 1}, {queue: false, duration: 'slow'}); 
    search.animate({ left: "-10px" }, 'slow'); 
    }, 
function() { 
    search.animate({opacity: 0}, {queue: false, duration: 'slow'}); 
    search.animate({ left: "+10px" }, 'slow'); 
    } 
);  

}); 

下面是代码,当我点击搜索图标没有任何反应:

$(function() { 
var search = $('#searchform').css('opacity', 0), 
    i = 0; 

$('#search-img').click(function() { 
    search.animate({opacity: 'toggle', left: i % 2 == 0 ? 0 : -10}); 
    i++; 
}); 
}); 

有谁看到什么问题与第二码是什么?

回答

0

var我将无法使用,因为它不是全局变量。要在$()中创建全局内容,只需将其分配给窗口对象即可。

修复的方法是这样的:

$(function() { 
var search = $('#searchform').css('opacity', 0), 
    window.i = 0; 

$('#search-img').click(function() { 
    search.animate({opacity: 'toggle', left: i % 2 == 0 ? 0 : -10}); 
    window.i++; 
}); 
}); 
+0

当我想,我得到这个错误“未捕获的SyntaxError:意外的标记” – Tom 2012-03-09 14:32:52

+0

我刚刚复制并粘贴了你的代码,并添加了窗口对象。错误是css('opacity',0)后的逗号。它应该是一个分号;代替。 – 2012-03-09 19:34:55

+0

我最终隐藏了在CSS文件中打开JS的人的搜索。然后,我做了我的jQuery看起来像这样$$('#search-img')。click(function(){ search.animate({opacity:'toggle',left:i%2 == 0?0:-10 }); window.i ++; });它现在打开和关闭,但根本不动。 – Tom 2012-03-09 20:49:43