Javascript jquery重新启动切换函数

Javascript jquery重新启动切换函数,javascript,jquery,html,Javascript,Jquery,Html,我有一个自定义的点击切换功能 是的 选项卡1切换-打开div 选项卡2切换-关闭div 在第一次切换之后,用户也可以通过单击div外部来关闭div,而无需激活toggle2。下次我想打开div时,它将在第二次切换时继续,这是一个坏错误 因此,基本上我是在问是否有任何方法可以中途结束/重新启动切换功能,这样,如果用户在div之外单击,下次我单击选项卡时,它将再次从第一次切换开始,而不是继续在第二次切换 是否有类似重置的操作可以重新启动切换功能?对这件事非常绝望,我已经考虑了一天了 $(functi

我有一个自定义的点击切换功能

是的

选项卡1切换-打开div 选项卡2切换-关闭div

在第一次切换之后,用户也可以通过单击div外部来关闭div,而无需激活toggle2。下次我想打开div时,它将在第二次切换时继续,这是一个坏错误

因此,基本上我是在问是否有任何方法可以中途结束/重新启动切换功能,这样,如果用户在div之外单击,下次我单击选项卡时,它将再次从第一次切换开始,而不是继续在第二次切换

是否有类似重置的操作可以重新启动切换功能?对这件事非常绝望,我已经考虑了一天了

$(function () {
    $("#toggle").clickToggle(function () { // toggle 1 open
        $(".log").html("click Toggle1, show tab panel, isToggle = true");
        $("#toggle_content").animate({width:'toggle'},350);
        $(".container").addClass("overlay-disable");

        // alternative exit(i want the toggle function to restart 
        // if this function runs, if not the next time i want to open the tab through
        // toggle 1, it will continue at toggle 2 instead which is a bad bug as that 
        //was suppose to be a exit.
        $(".container").click(function() { 
            $(".container").unbind("click").removeClass("overlay-disable");
            $(".log").html("panel hide success, isToggle = false");
            $("#toggle_content").hide();

        });
    },function() { // toggle 2 exit
        $(".container").unbind("click").removeClass("overlay-disable");
        $(".log").html("click Toggle2, hide tab panel");
        $("#toggle_content").animate({width:'toggle'},350);

    });
});
clickToggle是一个自定义插件,每次单击该选项卡时可在两个功能之间切换,它仅在打开和退出时工作正常,但一旦我添加了一个替代退出,如果激活了替代退出,我就无法获得将切换功能重新启动到toggle1的解决方案

小提琴:

当你点击tab时,它会弹出一个灰色框,当你再次点击tab时,它会平滑地关闭。
但是,当您使用tab out时,tab将不再顺畅运行

您可以通过实现简单的状态机方法来避免使用插件。你需要

单击状态时要调用的函数数组 变量来存储当前状态currentState 和一个在单击运行时调用状态函数的处理程序 代码:


我们也非常渴望看到你的代码。因为想象对我们来说很难。@shoaib chikate done,很抱歉,您要求我们调试您没有提供给我们的自定义函数clickToggle。请提供您的问题的真实答案…谢谢,正是我需要的。但是你能给我解释一下它的功能吗?我不理解run=function{returnstates[currentState].applythis,arguments;};它只是一个调用另一个函数的函数。代码的哪一部分不清楚?仅此行返回状态[currentState]。applythis,arguments,你看,我真的不知道return是如何工作的。我会在网上搜索。谢谢@yury tarabanko
   var states = [function () { // click button 1st toggle
        $(".log").html("click Toggle1, show tab panel, isToggle = true");
        $("#toggle_content").animate({width:'toggle'},350);
        $(".container").addClass("overlay-disable");
        currentState = 1; //change state

        $(".container").click(function() {
            $(".container").unbind("click").removeClass("overlay-disable");
            $(".log").html("panel hide success, isToggle = false");
            $("#toggle_content").hide();
            currentState = 0; //change state
        });
    },
      function() {
        $(".container").unbind("click").removeClass("overlay-disable");
        $(".log").html("click Toggle2, hide tab panel");
        $("#toggle_content").animate({width:'toggle'},350);
          currentState = 0; //change state

    }], 
    currentState = 0,
    run = function() {
       return states[currentState].apply(this, arguments);        
    };

$("#toggle").click(run);