Javascript jQuery重置切换状态?
我在一个按钮上使用Javascript jQuery重置切换状态?,javascript,jquery,Javascript,Jquery,我在一个按钮上使用切换,如下所示: $('#button123').toggle(function() { $("#button123").text("-"); $("#slideDiv").slideDown( "fast", function() { }); }, function() { $("#button123").text("+"); $("#slideDiv").slideUp( "fast",
切换
,如下所示:
$('#button123').toggle(function() {
$("#button123").text("-");
$("#slideDiv").slideDown( "fast", function() {
});
}, function() {
$("#button123").text("+");
$("#slideDiv").slideUp( "fast", function() {
});
});
在我的代码中,我想“重置”切换状态。并使slideDiv
滑回
目前,我正试图通过以下方式做到这一点:
$("#button123").text("+");
$("#slideDiv").slideUp("fast", function() {
// Animation complete.
});
问题是,运行该代码后,我必须按两次按钮123
,切换才能再次工作。我想这是因为我需要重新设置它
有什么想法吗?切换函数使用一种内部机制来确定要执行的两个回调中的哪一个。因此,假设它是一个增量计数器,如果值为奇数,则执行第一次回调,否则执行第二次回调,当更新切换处理程序外部元素的文本和显示时,不执行内部计数器。因此,
toggle
不知道文本更改为+
,这将导致toggle调用第二个处理程序(如果在上一个单击处理程序中执行了一个处理程序)
一种可能的解决方案是使用基于单击的解决方案而不是切换(另一个原因是切换在1.9中被删除)
演示:你能不能把这段代码一笔勾销出来,然后发布出来?因为最近版本的jQuery中已经删除了使用
.toggle()
,你可能应该完全重写它。使用您自己的变量跟踪状态,然后您可以轻松重置它。问题是,您正在更新toggle
之外的状态,插件不知道该更改,它会再次尝试执行该更改。。。这就是为什么您的切换不起作用
$('#button123').click(function () {
var text = $.trim($(this).text());
$(this).text(text == "-" ? '+' : '-');
if (text == '-') {
$("#slideDiv").slideUp("fast", function () {});
} else {
$("#slideDiv").slideDown("fast", function () {});
}
});