Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery重置切换状态?_Javascript_Jquery - Fatal编程技术网

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