Jquery 简单切换问题

Jquery 简单切换问题,jquery,Jquery,我只是在编写一个小函数,通过淡入淡出来切换内容 this.advancedSearch = function(fieldset, triggerBtn){ fieldset.hide() triggerBtn.click(function(){ fieldset.toggle(function(){ $(this).stop(false, true).fadeIn(300) }, function(){ $(this).stop(false, true).fade

我只是在编写一个小函数,通过淡入淡出来切换内容

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()
它就可以工作,但是当我插入这两个函数时,什么都不会发生,也不会抛出错误。我做错了什么吗?

我假设您打算让triggerBtn在字段集上触发切换事件

如果是,请尝试以下方法:

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
,都是将切换事件处理程序分配给
字段集


编辑:


或者,如果您根本不需要
字段集上的click(toggle)事件,那么David的答案就可以了。

您希望将toggle事件附加到被单击的对象:

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

toggle
函数绑定元素上的单击事件,该事件自动切换元素。。因此,在按钮单击回调中调用toggle不会切换元素,它只是绑定一个事件。手动实现比使用切换要简单得多

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;    
    })
}

很酷,谢谢它能工作,为什么我刚写的时候它还能工作。toggle()?
toggle()
根据传入的参数有不同的功能。哦,我不知道它绑定了一个点击事件!谢谢,但如果您知道如何使用,那么只需切换就可以更快地编写和使用:P