0

別の要素 (#aNav) がクリックされると、非表示または表示される要素 (nav) があります。

それはすでにうまくいきます。

しかし今は、クリックされた要素 (#aNav) 自体がいくつかの変更されたスタイルを取得するようにしたいと考えています。(nav) 要素が表示されるかどうかにかかわらず、これらのスタイルも変更されます。別のクリックでは、else セクションは実行されません。

コードは次のとおりです。

function nav(){
$('#aNav').click(function() {

    //changes the value of left
    var $lefter = $("nav");
    $lefter.animate({
        left: parseInt($lefter.css('left'),10) == 0 ?
            -$lefter.outerWidth() : 
            0
    });

    left = $("nav").css("left");
    if( left == 0 ) {
        $("#aNav div").css({
            "border-right":"33px solid transparent",
            "border-left":"0 solid transparent"
        });

    } else {
        $("#aNav div").css({
            "border-left":"33px solid transparent",
            "border-right":"0 solid transparent"
            });
        }

    });
};
$(document).ready(function(){
    nav();
});

私はelseセクションだけを実行したい。多分誰かが助けることができます。

4

4 に答える 4

0

でフラグを設定し、data()より正確であるため、代わりにそれを使用してクリックを追跡します。

$(document).ready(function () {
    $('#aNav').on('click', function () {
        var nav  = $("nav"),
            left = !$(this).data('state') ? ~nav.outerWidth() : 0;

        nav.animate({left: left}, 600);
        $(this).data('state', !$(this).data('state'))
               .find('div').css({
                   borderRight : (left===0?33:0)+'px solid transparent',
                   borderLeft  : (left===0?0:33)+'px solid transparent',
                }
        );
    });
});
于 2013-06-24T17:26:17.957 に答える
0

jQuery のcss()メソッドは、プロパティの値と単位leftを返すため、0 になることはありません: JSFiddle デモ

left の値を整数にするには、parseIntを使用できます。これは、数値以外の値になるまで解析します。

left = parseInt($("nav").css("left"), 10);

于 2013-06-24T17:26:02.623 に答える