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