2011-01-06 24 views
0

私はCSSスタイルプロパティjQueryのhide()と.css( 'display'、 'none')の違いは?

element.style.display = "none"; 

を設定し、一般的なJavaScriptを使用してから、jQueryのメソッド戻るボタンが私のページに戻るために使用されている

element.hide(); 

、要素のいくつかのページを変更しましたjQueryを使用して非表示になっています。生のJavaScriptを使用して表示を設定すると、ページに戻ると非表示の要素が非表示になります。

jQueryのhide()関数が同じように動作するようにする回避策がありますか?

答えて

9

jQueryのhide方法は

 for (i = 0; i < j; i++) { 
      this[i].style.display = "none"; 
     } 

あなたが他のいくつかの問題を抱えているが実行されます。

完全な方法は

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; 
    } 
}, 
+0

絶対に正しく...そこには、displayプロパティを 'キャッシュ'した別のメソッドがありました。ありがとう! –

0

これは同じです。 jQuery hideはdisplay:noneを適用します。要素に。あなたの隠れを誘発しているのは何ですか?それはdocument.readyにありますか?あなたが「戻って」ヒットすると、それはJavaScriptを実行しないようです。

3

大きな違いがあります:
.hide()が呼び出されたときに表示プロパティの値はjQueryのデータ・キャッシュに保存されているので、.show()が呼び出されたときに、初期表示値復活!

関連する問題