根据切换更改按钮值

时间:2012-11-30 15:22:59

标签: javascript jquery html

我想要做的是如果通过按下它打开的部分可以使按钮值为“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”上。

4 个答案:

答案 0 :(得分:3)

有几件事。首先你有$(".doc").click。你的意思是$("#doc").click

其次,如果您在检查:visible之前启动动画,则始终将被视为可见。您需要让值更改slideToggle调用的回调,或者只是反转分配顺序并在之后执行slideToggle

http://jsfiddle.net/95nKw/

答案 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");
    });
});