我有一大組頁面元素(我想用jQuery切換(顯示/隱藏))。 我只是使用$(".toggleElementClass").toggle();
這看起來像一個簡單的解決方案。用jQuery切換一大組頁面項目很慢
問題是,這需要幾秒鐘,即使在最新的Chrome瀏覽器。有沒有更快,更有效的方法來達到同樣的效果。
我有一大組頁面元素(我想用jQuery切換(顯示/隱藏))。 我只是使用$(".toggleElementClass").toggle();
這看起來像一個簡單的解決方案。用jQuery切換一大組頁面項目很慢
問題是,這需要幾秒鐘,即使在最新的Chrome瀏覽器。有沒有更快,更有效的方法來達到同樣的效果。
您可以通過利用樣式表將單個屬性更改中的所有顯示更改(通常爲祖先元素的類名)鍵入,從而減少瀏覽器必須執行的工作量。這意味着你可以讓他們全部一次而不是一個一個地改變,減少迴流次數並提高速度。例如:
<style type="text/css">
#mything p.toggled { display: none; }
#mything.toggled p { display: none; }
#mything.toggled p.toggled { display: block; }
</style>
<div id="mything">
<p> foo </p>
<p> bar </p>
<p> bof </p>
<p> zot </p>
</div>
<button id="toggle-all">all</button>
<script type="text/javascript">
$('#mything>p').click(function() {
$(this).toggleClass('toggled');
});
$('#toggle-all').click(function() {
$('#mything').toggleClass('toggled');
});
</script>
很難用所提供的信息正確回答這個問題。但是在這些場景中有很大幫助的一個改進是儘量縮小DOM搜索範圍,而不是使用$(".toggleElementClass").toggle();
,它更好地使用$("#myelements > .toggleElementClass").toggle();
將縮小jQuery查找要切換的元素的範圍。
在搜索dom方面的效率順序是:ID,標籤,*然後*類。所以:'$(「#ParentContainer> element.class」)。toggle();'可能會好一點。 – 2010-01-26 18:50:03
剛剛升級到1.4.2的jQuery它 做這一切問題無關。即使在一個「慢」IE7或IE8。 它只是這麼多更快。難以置信的。
短小而高效。太好了! – Ariel 2010-01-26 21:17:38
作品!謝謝 – 2010-10-18 22:27:54