0

要素を切り替える機能があります:

function toggle(elemName) {
    text = document.getElementById(elemName);
    var isHidden = text.style.display == 'none';
    text.style.display = isHidden ? 'block' : 'none';

    if (text.style.display == 'none') {
        $(text).slideUp();
    }
    else {
        $(text).slideDown();
    }
    return false;
}

本当に必要なのは、非表示の場合は下にスライドし、表示されている場合は上にスライドして非表示にすることです。

隠したり見せたりしていますが、スライドが機能しません。

何が間違っている可能性がありますか?

ありがとう

4

4 に答える 4

0

slideUp()またはを呼び出す前に要素を非表示にしていslideDown()ます。

この行を削除すると、正常に動作するはずです。

text.style.display = isHidden ? 'block' : 'none';

それが役に立てば幸い :)

于 2013-02-06T15:14:18.540 に答える
0

実際のデモを見るhttp://jsfiddle.net/CAeSD/4/

ロジックが逆になっています。 != 'none'notを使用してください== 'none'

また、次のような行を削除します。

var isHidden = text.style.display == 'none';
text.style.display = isHidden ? 'block' : 'none';

したがって、ワーキングコードは次のとおりです。

function toggle(elemName) {
    text = document.getElementById(elemName);

    if (text.style.display != 'none') {
        $(text).slideUp();
    }
    else {
        $(text).slideDown();
    }
    return false;
}

$("#name").on('click', function(){
                  toggle("txt");
});
于 2013-02-06T15:19:04.470 に答える
0

これを試して:

function customToggle(elemId) {
    var elem = $('#'+elemId);

    if ( elem.is(':visible') ) { elem.slideUp(); }
    else { elem.slideDown(); }
}

$(document).ready(function() {
    customToggle('myId');
});

$(text).slideUp();テキストは次のようにID名のみを返すため、例では機能しないことに注意してください$('myId').slideUp();。jQueryでは次のようになります。$('#myId').slideUp();

于 2013-02-06T15:15:47.097 に答える
0

slideToggle はあなたのニーズに合っていますか?

function toggle(elemName) {
    text = document.getElementById(elemName);
    $(text).slideToggle();

}

http://jsfiddle.net/kmd97/heVEE/

于 2013-02-06T15:18:08.590 に答える