Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 toggle()状态_Javascript_Jquery_Toggle - Fatal编程技术网

Javascript 如何更改jQuery toggle()状态

Javascript 如何更改jQuery toggle()状态,javascript,jquery,toggle,Javascript,Jquery,Toggle,使用toogle显示/隐藏div时,我遇到了一个问题,当我使用Anotor函数隐藏div时,我必须单击按钮两次才能执行正确的操作 有没有办法像我点击按钮一样改变切换开关 $('#add_task').toggle(function() { if ($("#new_task_status").attr("value")==0) { $("#new_task").slideDown(); $("#new_task_status").attr("value"

使用toogle显示/隐藏div时,我遇到了一个问题,当我使用Anotor函数隐藏div时,我必须单击按钮两次才能执行正确的操作

有没有办法像我点击按钮一样改变切换开关

$('#add_task').toggle(function() { 
    if ($("#new_task_status").attr("value")==0) { 
        $("#new_task").slideDown();
        $("#new_task_status").attr("value", "1");
    }
}, function() {
    if ($("#new_task_status").attr("value")==1) { 
        $("#new_task").slideUp();
        $("#new_task_status").attr("value", "0");
    }
});


$('nav').click(function() { 
    if ($("#new_task_status").attr("value")==1) { 
        $("#new_task_status").attr("value", "0");
        $("#new_task").slideUp();
    }
});
你可以改变你的想法,这样就没关系了,就像这样:

$('#add_task').click(function() { 
  $("#new_task").slideToggle(function() {
    $("#new_task_status").val($(this).is(':visible') ? 1 : 0);
  });
});

相反,这会产生一个,因此当前状态并不重要……当它完成滑动时,如果显示(您打开它),则在输入中会得到一个
1
,否则会得到一个
0
。另外,用于输入设置,更简单、更通用(我假设这是一个输入,因为这是最有可能的)。

不,您必须实现自己的toggle()函数的替代方法,该函数检查元素的当前状态。

我认为根本不需要使用
toogle
。只需单击处理程序即可执行相同操作:

$('#add_task').click(function() { 
    if ($("#new_task_status").attr("value")==0) { 
        $("#new_task").slideDown();
        $("#new_task_status").attr("value", "1");
    } else  {
        $("#new_task").slideUp();
        $("#new_task_status").attr("value", "0");
    }
});
然后:

$('nav').click(function() { 
    $('#add_task').click();
});
顺便说一句,
nav
不是HTML元素。你的意思可能是导航(可能只是打字错误)


和Nick已经提到的,考虑使用<代码> .Vald()/代码> ./P> < P>我建议一个事件驱动的方法,如:

$("#add_task").bind({
    "toggle": function(e) {
    $("#add_task").trigger(($("#new_task_status").attr("value")==0) ? "open" : "close"););
},
"open": function(e) {
    $("#new_task_status").attr("value", "1");
    $("#new_task").slideDown();
},
"close": function(e) {
    $("#new_task_status").attr("value", "0");
    $("#new_task").slideUp();
}               
});

$("#nav").click(function() {
    $("#add_task").trigger("toggle");
});

这与OP不同,单击
#nav
总是关闭元素,您的解决方案会导致我切换它。您需要一个
.trigger(“close”)
来代替,但这似乎是一个非常复杂的方法,无法利用已定义的函数…顺便说一句,您的解决方案在一个周期中上下滑动,因此它在摆动:)