2010-04-30 52 views
0

我只是編程一個小功能,通過淡入淡出來切換內容。簡單的切換問題

this.advancedSearch = function(fieldset, triggerBtn){ 
    fieldset.hide() 
    triggerBtn.click(function(){ 
     fieldset.toggle(function(){ $(this).stop(false, true).fadeIn(300) }, function(){ $(this).stop(false, true).fadeOut(300) }); 
     return false; 
    }) 
} 

,如果只是我用toggle()它的工作原理,但是當我插入兩個功能沒有任何反應並不會引發錯誤。有什麼我做錯了嗎?

回答

3

我假設你打算triggerBtn觸發fieldset上的切換事件。

如果是的話,試試這個:

this.advancedSearch = function(fieldset, triggerBtn){ 
    fieldset.hide(); 
    triggerBtn.click(function(){ 
     fieldset.click(); 
    }); 
    fieldset.toggle(function(){ $(this).stop(false, true).fadeIn(300) }, 
        function(){ $(this).stop(false, true).fadeOut(300) }) 
} 

你有它的方式,每次你在triggerBtn點擊時,你分配切換事件處理程序fieldset


編輯:

或者,如果你不需要在fieldset點擊(切換)事件的話,那麼大衛的回答會工作。

+0

很酷的感謝它的工作,爲什麼它工作時,我只寫.toggle()? – meo 2010-04-30 17:07:45

+0

'toggle()'具有不同的功能,具體取決於傳入的參數。http://api.jquery.com/toggle/ – user113716 2010-04-30 17:10:30

3

你想切換事件被附着在物體上被點擊:

this.advancedSearch = function(fieldset, triggerBtn) { 
    fieldset.hide() 
    triggerBtn.toggle(
     function(){ fieldset.stop(false, true).fadeIn(300) }, 
     function(){ fieldset.stop(false, true).fadeOut(300) } 
    );   
} 
1

toggle功能結合,可以自動切換的元素的元素上的click事件..所以打電話給你按一下按鈕回調犯規內部切換切換元素,它只是綁定一個事件。手動實現這個更簡單,而不是使用切換。

this.advancedSearch = function(fieldset, triggerBtn){ 
    fieldset.hide() 
    triggerBtn.click(function(){ 
     if(fieldset.hasClass('toggle-on')) { 
      fieldset 
       .removeClass('toggle-on') 
       .stop(false, true).fadeOut(300); 
     } 
     else { 
      fieldset 
       .addClass('toggle-on') 
       .stop(false, true).fadeIn(300); 
     } 
     return false;  
    }) 
} 
+0

哦,我不知道它帶來了點擊事件!謝謝,但只要切換,編寫和使用的速度要快得多,當你知道如何:P – meo 2010-04-30 17:08:56