1. ホーム
  2. javascript

[解決済み] jQueryの.hide()とCSSでdisplay: noneを設定することの違いについて

2022-03-02 12:53:52

質問

どっちがいいんだろう? .hide() を書き出すよりも早いです。 .css("display", "none") しかし、その違いは何でしょうか。また、どちらも実際にHTML要素に対して何をしているのでしょうか。

解決方法は?

に関するjQueryのページより .hide() :

マッチした要素はアニメーションなしですぐに隠されます。これは .css('display', 'none') とほぼ同じですが、displayプロパティの値がjQueryのデータキャッシュに保存され、後で初期値に戻すことができるようになります。もしある要素のdisplay値がinlineであった場合、いったんhiddenにしてから表示すると、再びinlineで表示されます。

ということが重要な場合、以前の値に戻すことができるのは display を使用したほうがよいでしょう。 hide() なぜなら、そうすれば前の状態が記憶されるからです。それ以外には、特に違いはありません。

$(function() {
    $('.hide').click(function(){
        $('.toggle').hide();
        setDisplayValue();
    });
    $('.show').click(function(){
        $('.toggle').show();
        setDisplayValue();
    });
});

function setDisplayValue() {
    var display = $('.toggle')[0].style.display;
    $('.displayvalue').text(display);
}
div {
    display: table-cell;
    border: 1px solid;
    padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
    <button class="hide">Hide</button>
    <button class="show">Show</button>
</p>

<div class="toggle">Lorem Ipsum</div>

<p>
    The display value of the div is:
    <span class="displayvalue"></span>
</p>