7 ответов:
со страницы jQuery о .скрыть():
"соответствующие элементы будут скрыты немедленно, без анимации. Это примерно эквивалентно вызову .css ('display',' none'), за исключением того, что значение свойства display сохраняется в кэше данных 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>
.hide()хранитdisplayсвойство непосредственно перед установкой его вnone, Так что если бы это был не стандартdisplayсвойство для элемента вы немного безопаснее,.show()будет использовать это сохраненное свойство в качестве того, к чему вернуться. So...it делает некоторые дополнительные работы, но если вы не делаете Т элементов, разница в скорости должна быть незначительной.
глядя на код 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; } },
это одно и то же.
.hide()вызывает функцию jQuery и позволяет добавить к ней функцию обратного вызова. Итак, с.hide()вы можете добавить анимацию к примеру.
.css("display","none")изменение атрибутов элементаdisplay:none. Это то же самое, как если бы вы сделали следующее В JavaScript:document.getElementById('elementId').style.display = 'none';The
.hide()функция, очевидно, занимает больше времени для запуска, поскольку она проверяет функции обратного вызова, скорость и т. д...
использовать и это хороший ответ; это не вопрос или-или.
The преимущество из использования обоих является то, что CSS скроет элемент немедленно при загрузке страницы. В jQuery .скрыть будет мигать элемент в течение четверти секунды, а затем скрыть его.
в случае, когда мы хотим, чтобы элемент не отображался при загрузке страницы, мы можем использовать CSS и установить display:none & use the jQuery .скрывать.)( Если мы планируем переключаться элемент, который мы можем использовать jQuery toggle.
оба делают то же самое во всех браузерах, AFAIK. Проверено на Chrome и Firefox, как добавить
display:noneдоstyleатрибут элемента.
см. нет никакой разницы, если вы используете основной метод скрытия. Но jquery предоставляет различные методы скрытия, которые дают эффекты элементу. См. ниже ссылку для подробного объяснения: эффекты для скрытия в Jquery
Comments