2010-08-26 64 views
2

我有一些運行良好的jQuery代碼,直到我添加了jQuery UI庫(1.7.2),並導致show()方法在指定回調時失敗。添加jQuery UI中斷jQuery show()

$('#main.home ul#promotions').show(function() { 
    if (typeof f == "function") f(); 
}); 

這似乎是jQuery UI的覆蓋表演,現在我需要指定爲「效果」附加參數,下面的代碼修復該問題:

$('#main.home ul#promotions').show('blind', function() { 
    if (typeof f == "function") f(); 
}); 

然而,這是一個腳本的一部分這應該不依賴於jQuery UI庫,所以我想在這種情況下停止jQuery UI覆蓋顯示。

任何人都可以建議如何做到這一點?

戴夫

+0

您使用的是哪個版本的jQuery? – 2010-08-26 11:55:47

+0

好點 - 這也是jQuery UI的舊版本,儘管我已經在1.4.2中使用了它(輕微地),並且沒有發現任何問題。 – Pointy 2010-08-26 12:15:34

回答

2

正常的jQuery .show()方法不採取單一函數參數。它不需要參數,或者持續時間和(可選)回調。因此,jQuery UI版本是兼容的。

對於普通的jQuery,如果你有興趣在.show()立即發生,我認爲你可以通過 零作爲第一個參數。但是,我不明白你爲什麼這樣做;如果你不想動畫,那麼.show()是同步的,你可以在調用它之後立即放置你的「回調」代碼。換句話說,在這種情況下,回調沒有任何意義。

編輯 —爲無限知識淵博Craver先生指出,到.show()通話,只需功能就像.show("normal", theFunction)調用它。不幸的是,jQuery的UI代碼顯然弄亂了,但你可以用「normal」代碼作爲第一個參數,你應該沒問題。

+1

由於邏輯的方式(我同意API沒有說這個),傳遞一個函數相當於'.show(「normal」,func)',所以他的當前代碼實際上是一個400ms動畫。 – 2010-08-26 12:04:09

+0

你確定嗎?它看起來像通過的函數,因爲「速度」參數基本上會被忽略。然而,這段代碼有點令人困惑,所以我可能是錯的。我正在研究jQuery中的「speed()」實用程序,我認爲*會嘗試將該函數用作查找命名速度數組的函數。 – Pointy 2010-08-26 12:05:32

+0

@Pointy - 最簡單的方法是測試,你可以看到這裏的行爲:http://jsfiddle.net/nick_craver/7sr4b/ :) – 2010-08-26 12:09:31