2012-11-18 96 views
0

我從Stack上的代碼創建了這個小提琴,但它發射了一個錯誤。你能幫忙嗎?jquery error undefined function

我的小提琴:http://jsfiddle.net/422steve/DVNGc/

原雁:https://stackoverflow.com/a/13000179/501173

錯誤,我得到的是:類型錯誤:$ allExtended.slideUp()不是一個函數

JS:

$('.holder').on('click','a',function(e){ 
    e.preventDefault(); 
    var $allExtended = $(this).closest('.wrapperdoo').find('.extended'), 
     $extended = $allExtended.eq($(this).index()),   
     doIt= ($extended.is(':visible')) ? $extended.slideUp() : ($allExtended.slideUp()) ($extended.slideDown()); 
}); 
+0

它甚至沒有正確的語法。 '($ allExtended.slideUp())($ extended.slideDown())'這是什麼? –

回答

2

這是怎麼回事 - 在你的三元操作中,在最後一行,你試圖調用兩個函數。這是不可能的。您需要使用if塊。這是我重寫它的方式。我不知道,如果你使用的是doIt變量用於任何目的,但你要檢查undefined

$('.holder').on('click','a',function(e){ 
    e.preventDefault(); 
    var $allextended = $(this).closest('.wrapperdoo').find('.extended'), 
     $extended = $allextended.eq($(this).index()), 
     doIt = undefined; 

    if ($extended.is(":visible")) { 
     doIt = $extended.slideUp();    
    } else { 
     $allextended.slideUp(); 
     doIt = $extended.slideDown(); 
    } 
});​ 

---編輯---

要將類添加到正在單擊在href,只是像這樣做,在功能:

$(this).addClass('class'); 

如果你想刪除的類時,你都做了,像這樣做。首先,分配這個變量作爲一個全局變量(所以this變量不弄混),就像這樣:

var sender = $(this); 

然後,在你slideUp()slideDown()功能,第二個參數是當一個回調它已完成:

$allextended.slideUp(500, function() { sender.removeClass('class'); }); 
+0

作品完美,選擇和投票 – 422

+0

一個小問題。我需要將一個類追加到觸發滑塊的href中,因爲在容器div中還有其他href鏈接。有沒有這方面的解決方案,你可以想到,可以說一個href類被放置 – 422

1

($allextended.slideUp()) ($extended.slideDown())是非常錯誤的。
您寫的代碼調用slideUp(),然後調用返回值slideUp作爲函數,傳遞slideDown()

它看起來像你試圖運行兩個語句;要做到這一點,你需要一個if塊。

+0

謝謝:)的回答 – 422