我想要做的是如果通过按下它打开的部分可以使按钮值为“1”,并且如果该部分不可见则使其显示为“2”。 (可见/不可见 - 隐藏/可见)。
这是我认为最接近事实的失败尝试:
$(document).ready(function(){
$(".doc1").hide();
$(".doc").click(function(){
$(".doc1").slideToggle("fast");
if($('.doc1').is(':visible')) {
document.getElementById('doc').value = '1';
}
else
document.getElementById('doc').value = '2';
});
});
无论该部分是打开(可见)还是隐藏(.hide),该值都会粘在“2”上。
答案 0 :(得分:3)
有几件事。首先你有$(".doc").click
。你的意思是$("#doc").click
?
其次,如果您在检查:visible
之前启动动画,则始终将被视为可见。您需要让值更改slideToggle
调用的回调,或者只是反转分配顺序并在之后执行slideToggle
:
答案 1 :(得分:2)
根据jquery文档:
在隐藏元素的动画期间,该元素在动画结束前被视为可见。在显示元素的动画期间,该元素在动画开始时被视为可见。
可能你应该等到动画完成
$(".doc").click(function(){
$(".doc1").slideToggle("fast", function(){
if($('.doc1').is(':visible')) {
document.getElementById('doc').value = '1';
}
else
document.getElementById('doc').value = '2';
});
});
答案 2 :(得分:1)
如果您打算使用jquery,请继续使用它。使返回和修复/阅读更容易。
以下可能是您要找的内容。
$(document).ready(function(){
$(".doc1").hide();
$(".doc").click(function(){
$(".doc1").slideToggle("fast", function() {
if($(this).is(':visible')) {
$('#doc').val('1');
} else {
$('#doc').val('2');
}
});
});
});
答案 3 :(得分:0)
未经测试,但我会尝试这样的事情:
$(document).ready(function(){
$(".doc1").hide();
$(".doc").click(function(){
$(".doc1").slideToggle("fast");
if($('.doc1').is(':visible')) {
$(".doc").val("1"); //or .val(1);
}
else
$(".doc").val("2");
});
});