2015-07-04 25 views
-1

我有一個手工響應的jQuery網格,這個網格中的元素是DIV的float:leftjQuery + CSS。最快的方式實現風格到無數元素

它們的寬度和連續的數字正在計算它們的容器寬度變化。例如,如果容器寬度爲500px,比可以將4個元素保存在一行中,則將元素寬度計算爲25%,如果容器寬度更改爲400,則可以只保留3個寬度爲33%的行。

計算並不重要,問題是改變容器元素風格的最快方法是什麼?現在我做兩難

$('.container .element').css({width:'25%'}); 

據我瞭解,jQuery迭代每個元素並更改它的樣式。但是,如果我能動態地創建一個樣式:

.container.foo .element {width:25%;} 

而只是添加.foo類我的容器,比我想這個操作將通過瀏覽器強制,它可能會更快。

是嗎?可能嗎?

+0

_「是否有可能?」_是的。 _「可能會更快」_試圖對兩個選項進行基準測試? – guest271314

+1

考慮看看這個答案:http://stackoverflow.com/questions/1720320/how-to-dynamically-create-css-class-in-javascript-and-apply#answer-1720483 – Mindastic

+0

如果有一種方式要用jQuery來做,沒有jQuery的話,總會有更快的方法。真的,只需要簡單的解決方案。 – Bergi

回答

0

正確的方法來做到這一點是:

  1. 在你的CSS創建班級。你需要每種風格。
  2. 使用jQuery添加或刪除類。 addClass/removeClass

所以是的,第二個選項更快,更清潔,可重複使用。這是關於50% faster.

+0

我認爲OP正在討論的是動態創建類,而不僅僅是應用現有類。 – Bergi

+0

也許,如果它是%,你應該可以使用CSS。在jQuery中使用它可能會變得非常混亂。你可以把'.row25'換成'.row33'等。 – Pobe

+0

起初我以爲要創建一個動態類,但是預定義的類應該更快,而且我認爲每10%寬度10行10個元素是一行足夠。謝謝。 – Vladimir