Javascript 如何更改jQuery toggle()状态
使用toogle显示/隐藏div时,我遇到了一个问题,当我使用Anotor函数隐藏div时,我必须单击按钮两次才能执行正确的操作 有没有办法像我点击按钮一样改变切换开关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"
$('#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”)
来代替,但这似乎是一个非常复杂的方法,无法利用已定义的函数…顺便说一句,您的解决方案在一个周期中上下滑动,因此它在摆动:)