0

我想要做的是,如果通过按下它打开的部分可见,则将按钮值设为“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

4 回答 4

3

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

其次,如果您在 check 之前启动动画:visible,它将始终被认为是可见的。您要么需要使值更改调用的回调slideToggle,要么只需反转分配顺序并在slideToggle之后执行:

http://jsfiddle.net/95nKw/

于 2012-11-30T15:29:55.797 回答
2

根据 jquery 文档:

在隐藏元素的动画期间,该元素被认为是可见的,直到动画结束。在显示元素的动画期间,该元素被认为在动画开始时可见。

可能你应该等到动画完成

$(".doc").click(function(){
    $(".doc1").slideToggle("fast", function(){
        if($('.doc1').is(':visible')) {
            document.getElementById('doc').value = '1';
        }
        else
            document.getElementById('doc').value = '2';     
    });
});
于 2012-11-30T15:29:01.460 回答
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');
           }
        });
    });
});
于 2012-11-30T15:31:20.310 回答
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");
    });
});
于 2012-11-30T15:30:21.140 回答