Разница между jQuerys.hide() и настройкой CSS для отображения: нет

Что мне лучше делать? .hide() быстрее, чем записывать .css("display", "none"), но в чем разница и что они на самом деле делают с элементом HTML?

Ответ 1

На странице jQuery . hide():

"Соответствующие элементы будут немедленно скрыты без анимации. Это примерно эквивалентно вызову .css('display', 'none'), за исключением того, что значение свойства отображения сохраняется в кеше данных jQuery, так что дисплей может быть позже восстановлен до его начального значения. Если элемент имеет отображаемое значение 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>

Ответ 2

.hide() сохраняет предыдущее свойство display перед установкой его на none, поэтому, если это не стандартный display свойство для элемента, которое вы немного безопаснее, .show() будет использовать это хранимое свойство как то, к чему вернуться. Итак... он выполняет какую-то дополнительную работу, но если вы не используете тонны элементов, разница в скорости должна быть незначительной.

Ответ 3

Глядя на код jQuery, это то, что происходит:

hide: function( speed, easing, callback ) {
    if ( speed || speed === 0 ) {
        return this.animate( genFx("hide", 3), speed, easing, callback);

    } else {
        for ( var i = 0, j = this.length; i < j; i++ ) {
            var display = jQuery.css( this[i], "display" );

            if ( display !== "none" ) {
                jQuery.data( this[i], "olddisplay", display );
            }
        }

        // Set the display of the elements in a second loop
        // to avoid the constant reflow
        for ( i = 0; i < j; i++ ) {
            this[i].style.display = "none";
        }

        return this;
    }
},

Ответ 4

Это одно и то же. .hide() вызывает функцию jQuery и позволяет добавить к ней функцию обратного вызова. Итак, с .hide() вы можете добавить анимацию, например.

.css("display","none") изменяет атрибут элемента на display:none. Это то же самое, что и в JavaScript:

document.getElementById('elementId').style.display = 'none';

Функция .hide(), очевидно, занимает больше времени для запуска, поскольку она проверяет функции обратного вызова, скорость и т.д.

Ответ 5

Для использования оба - хороший ответ; это не вопрос ни о, ни о.

преимущество заключается в том, что CSS будет скрывать элемент сразу при загрузке страницы. JQuery.hide запустит элемент на четверть секунды, а затем спрячет его.

В случае, когда мы хотим, чтобы элемент не отображался при загрузке страницы, мы можем использовать CSS и установить отображение: none и использовать jQuery.hide(). Если мы планируем переключить элемент, мы можем использовать jQuery для переключения.

Ответ 6

Оба делают то же самое во всех браузерах AFAIK. Проверено на Chrome и Firefox, добавьте display:none в атрибут style этого элемента.

Ответ 7

Смотрите, нет никакой разницы, если вы используете базовый метод hide. Но jquery предоставляет различные методы hide, которые дают эффект элементу. Подробнее см. Ссылку ниже: Эффекты для скрытия в JQuery