2011-09-17 132 views
2

在這種stackoverflow answer正確使用jQuery切換?

$('#user_button').toggle(function() { 
    $(".hello").addClass("active"); 
}, function() { 
    $(".hello").removeClass("active"); 
}); 

jQuery的.toggle回調函數用來類添加和刪除的元素。現在根據jQuery .toggledocumentation,.toggle最初用於在所選元素的可見性狀態之間切換。

我做了一個演示的jsfiddle:http://jsfiddle.net/taheri/nYdng/

在這裏我的例子似乎回呼功能之間和的#user_button本身不被切換能見度只有備用。我在這裏的文檔中錯過了什麼?可以使用切換僅在功能之間切換嗎?

謝謝!

+3

有兩種'toggle'方法... [這一個](http://api.jquery.com/toggle/)和[this one](http://api.jquery.com/toggle-event /)。他們應該用不同的名字來避免這種混淆。 –

+0

驚人的...希望你可以把這作爲一個答案。 – Mohammad

+0

當然,我已經發布了一個答案。 –

回答

4

有兩種切換方法... this一和之一。他們應該用不同的名字來避免這種混淆。

+0

+1有幫助。請注意,我意識到此切換不會在您希望切換的元素的onclick屬性中起作用。此切換功能將preventDefault因此不執行onclick屬性! –

1

從您提供的jQuery的文檔鏈接:

注:事件處理套房還設有一個名爲.toggle()方法。 哪一個被解僱取決於傳遞的參數集合。

因爲您傳遞了兩個函數作爲參數,所以調用事件處理套件的toggle()函數。

-1

#user_button的可見性未被切換,因爲您正在切換$(".hello")。也就是說然後

$('#user_button').toggle(function() { 
    $(this).hide(); 
    $(".hello").addClass("active"); 
}, function() { 
    $(this).show(); 
    $(".hello").removeClass("active"); 
}); 

會改變的#user_button知名度。

+0

謹慎擴大一點? – Bojangles

-1

要在類之間切換,使用jQuery的toggleClass()方法。在jQuery中還有其他類似的切換,如slideToggle(),它們只是animate函數的快捷方式。

但是,根據您提供的鏈接,您不能爲toggle()方法提供兩個回調函數。您只應提供持續時間(可選),緩動(也可選)和回調(可選),或者您可以簡單地提供一個布爾值。

我檢查了你的代碼,它似乎工作得很好。但是,我認爲這種用法可能不是最佳做法。我仍然在尋找什麼是錯的。

0

在jQuery中(檢查1.6.2源代碼之後),.toggle()支持許多不同類型的參數。它支持的一件事是傳遞兩個回調函數。如果這就是你通過它的時候,它會在你第一次調用它的時候調用第一個函數,第二次調用它時它會調用第二個函數,並且每次都會交替。 '

當你像這樣傳遞函數時,除了調用你的函數外,它沒有其他的操作。如果你想隱藏和顯示某些東西,你必須在你的功能中做到這一點。

你可以看到它在這裏工作:http://jsfiddle.net/jfriend00/QGz5c/

jQuery文檔沒有說清楚。對於.toggle(),應該只有一組文檔描述了可以傳遞它的所有選項,但正如imeime指出的那樣,您可以通過它的不同類型的參數有兩套完全不同的文檔。