web-dev-qa-db-ja.com

可視性を設定するためのjQuery .hide()と同等のものです。

JQueryには、CSSのdisplay: none設定を設定する.hide()メソッドと.show()メソッドがあります。

visibility: hidden設定を設定する同等の機能はありますか?

私は私が.css()を使うことができることを知っています、しかし私は.hide()のようないくつかの機能を好む。ありがとう。

313
TMS

あなたはあなた自身のプラグインを作ることができます。

jQuery.fn.visible = function() {
    return this.css('visibility', 'visible');
};

jQuery.fn.invisible = function() {
    return this.css('visibility', 'hidden');
};

jQuery.fn.visibilityToggle = function() {
    return this.css('visibility', function(i, visibility) {
        return (visibility == 'visible') ? 'hidden' : 'visible';
    });
};

もしあなたがオリジナルのjQueryのtoggle()をオーバーロードしたいのなら、私はお勧めしません...

!(function($) {
    var toggle = $.fn.toggle;
    $.fn.toggle = function() {
        var args = $.makeArray(arguments),
            lastArg = args.pop();

        if (lastArg == 'visibility') {
            return this.visibilityToggle();
        }

        return toggle.apply(this, arguments);
    };
})(jQuery);

jsFiddle

395
alex

組み込まれたものはありませんが、あなたは非常に簡単にあなた自身のものを書くことができます:

(function($) {
    $.fn.invisible = function() {
        return this.each(function() {
            $(this).css("visibility", "hidden");
        });
    };
    $.fn.visible = function() {
        return this.each(function() {
            $(this).css("visibility", "visible");
        });
    };
}(jQuery));

これを次のように呼びます。

$("#someElem").invisible();
$("#someOther").visible();

これが 実用的な例です

96
James Allardice

もっと簡単な方法はjQueryの toggleClass() methodを使うことです。

CSS

.newClass{visibility: hidden}

HTML

<a href="#" class=trigger>Trigger Element </a>
<div class="hidden_element">Some Content</div>

JS

$(document).ready(function(){
    $(".trigger").click(function(){
        $(".hidden_element").toggleClass("newClass");
    });
});
52
Chaya Cooper

現在のレイアウトを維持するために可視性のみを持つhideの標準機能だけが必要な場合は、hideのコールバック関数を使用してタグ内のCSSを変更できます。 jqueryでドキュメントを隠す

例 :

$('#subs_selection_box').fadeOut('slow', function() {
      $(this).css({"visibility":"hidden"});
      $(this).css({"display":"block"});
});

これはdivを隠すために通常のクールなアニメーションを使用しますが、アニメーションが終了した後、あなたは可視性を隠しに設定し、ブロックに表示します。

例: http://jsfiddle.net/bTkKG/1/ /

私はあなたが$( "#aa")。css()の解決策を望んでいなかったことを知っています、しかしあなたがアニメーションを失うcss()メソッドだけを使用するためであるかどうか指定しませんでした。

23
h3ct0r

純粋なJS jQueryのhide()/ show()と同等です。

function hide(el) {
    el.style.visibility = 'hidden';    
    return el;
}

function show(el) {
    el.style.visibility = 'visible';    
    return el;
}

hide(document.querySelector(".test"));
// hide($('.test')[0])   // usage with jQuery

流暢なインターフェース "desingパターン"を満たすためにreturn elを使用します。

これが 作業例です です。


以下に、私は非常に非推奨選択肢を提供します、しかしそれはおそらくもっと "質問に近い"答えです:

HTMLElement.prototype.hide = function() {
    this.style.visibility = 'hidden';  
    return this;
}

HTMLElement.prototype.show = function() {
    this.style.visibility = 'visible';  
    return this;
}

document.querySelector(".test1").hide();
// $('.test1')[0].hide();   // usage with jQuery

もちろんここでは純粋なjsを使用しているので、これはjQuery 'each'( @JamesAllardice answerで指定)を実装していません。

実用的な例は ここ です。

1

これが$.prop(name[,value])$.attr(name[,value])関数のように動作する実装の一例です。 b変数が埋められると、それに応じて可視性が設定され、thisが返されます(他のプロパティを続行することができます)。それ以外の場合は可視性の値を返します。

jQuery.fn.visible = function (b) {
    if(b === undefined)
        return this.css('visibility')=="visible";
    else {
        this.css('visibility', b? 'visible' : 'hidden');
        return this;
    }
}

例:

$("#result").visible(true).on('click',someFunction);
if($("#result").visible())
    do_something;
0
Teet Kalm