2012-03-09 175 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