jquery重新启动一个toggle函数
jquery restart a toggle function
我有一个自定义的点击切换功能
它做
tab第一个切换-打开div选项卡第二个切换-关闭div
在第一次切换之后,用户还可以通过在div外部单击来关闭div,而无需激活toggle2。下次我想打开div时,它将在第二个toggle继续,这是一个糟糕的bug。
因此,基本上我是在问是否有任何方法,我可以中途结束/重新启动切换功能,这样,如果用户在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是一个自定义插件,每次我单击选项卡时,它可以在2个函数之间切换,只需打开和退出即可,但一旦我添加了一个替代退出,如果激活了替代退出,我就无法找到将切换函数重新启动回toggle1的解决方案。
小提琴:http://jsfiddle.net/eekxzq1u/
当你点击标签时,它会弹出一个灰色的框,当你再次点击标签,它会顺利关闭。但当你调出标签时,标签将不再顺利工作。
您可以通过实现一种简单的状态机方法来避免使用插件。演示。您将需要
- 单击
states
时要调用的函数数组 - 用于存储当前状态
currentState
的变量 - 以及一个在单击
run
时调用状态函数的处理程序
代码:
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);
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 第二个 jQuery toggle() 文件破坏了第一个 toggle() 方法
- jquery重新启动一个toggle函数
- 如何在AngularJS/Bootstrap中传递一个变量给data-target - data-toggle
- 在菜单外添加一个“点击”按钮以关闭菜单.jQuery / Javascript到一个带有.toggle()的下拉菜单
- Jquery toggle()添加和删除一个类
- AngularJS相当于jQuery的toggle显示/隐藏一个section
- 使用第二个toggle删除在第一个toggle中实现的span