2010-04-30 59 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