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ですか?

次に、チェックする前にアニメーションを開始する: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 に答える