作者CRPKT (crpkt)
看板Ajax
標題Re: [問題] JQuery的selecters抓特定格式的class
時間Mon Oct 28 16:40:06 2013
※ 引述《LaPass (LaPass)》之銘言:
: 用JQuery的Selectors
: 可以把.myclass的物件抓出來
: 像這樣:
: $('.myclass')
: 請問有沒有辦法
: 一次就把含有 myclass開頭的class都抓出來呢?
: 例如:
: myclass_0
: myclass_1
: myclass_x
: myclass_day_1
: .....
1F:→ akiratw:*[class^="myclass_"]10/28 14:48
2F:推 mrbigmouth:樓上這樣抓不到<span class="abc myclass_1">10/28 14:55
3F:→ akiratw:那就用 *= 吧10/28 14:57
4F:推 mrbigmouth:樓上這樣會抓到<span class="notmyclass_1">10/28 15:00
5F:→ akiratw:那有更準的 selecotr 嗎?10/28 15:01
6F:推 mrbigmouth:目前沒想到不靠filter的精準方法 所以我沒跳出來回答10/28 15:05
很接近了,Bootstrap 2.3.2 的 icon 在 CSS 裡是用這組 selector:
[class^="icon-"], [class*=" icon-"]
但是 3.0 的時候因為效能問題把它改了,規格改成使用者必須自行額外加上 .icon
jQuery 有自己的 selector engine,但是去撈 attribute 理論上難免比較慢。
所以如果你的目的純粹是撈元件,或許你把規格改成
myclass myclass_0
myclass myclass_1
myclass myclass_x
myclass myclass_day_1
然後直接撈 $('.myclass') 比較簡單;
要不然就是撈 $('[class^="myclass_"], [class*=" myclass_"]'),
然後記得測一下效能...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.202.140
7F:→ LaPass:了解~ 感謝~ ^^ 10/28 16:42
8F:推 mrbigmouth:啊 居然這麼簡單!? 10/28 17:38
9F:→ mrbigmouth:不過這效能上真的值得考慮 改天拿來跟用filter的方式 10/28 17:38
10F:→ mrbigmouth:比比看 10/28 17:39
12F:→ mrbigmouth:用我的瀏覽器看起來是寫成jquery plugin的filter快很多 10/28 18:07
13F:→ mrbigmouth:當然用selector好像還是比較方便.... 10/28 18:08
14F:→ danny8376:selector慢是因為被jQuery的解譯拖累了... 10/28 19:29
16F:→ danny8376:因為filter會針對每個jQuery都重新解析一次filter 10/28 19:33
17F:→ danny8376:會導致那段有複雜度的code被jQuery解析上萬次... 10/28 19:34
18F:→ danny8376:倒過來 最後在過濾span效率就截然不同了 10/28 19:35
19F:→ danny8376:不過如果瀏覽器不支援CSS3的話... 10/28 19:36
20F:→ danny8376:用selector大概不管怎樣會慢到死了XDD 10/28 19:36
21F:→ danny8376:改一下 native那個忘了過濾span XD 10/28 19:37
23F:推 mrbigmouth:真是驚人 先做attr selector再做tag selector居然會 10/29 09:23
24F:→ mrbigmouth:比較快....完全反直覺啊XD 雖然以前好像就看過類似說 10/29 09:23
25F:→ mrbigmouth:法不過沒記到心裡....XD 10/29 09:23
26F:推 mrbigmouth:不過querySelectorAll要ie9以後啊.... 10/29 09:27
28F:→ s540421:實測上attribute selector比class selector慢約75% 10/29 09:42
29F:→ s540421:而DOM變得複雜時,attribute selector的效能會更差 10/29 09:51
30F:推 mrbigmouth:喂喂 直接拿[.class]跟[抓特定開頭class]的功能做效能 10/29 10:09
31F:→ mrbigmouth:比對這樣對嗎?XDDD 10/29 10:09
32F:→ mrbigmouth:當然直接把所有myclass_xxx加上myclass絕對是最快的 10/29 10:10
33F:→ mrbigmouth:我的意思是....能這樣做當然就這樣做最好.... 10/29 10:11
34F:→ chrisQQ:只有我覺得命名成這樣就是個錯誤的開始嘛 XD 10/29 12:50
35F:推 mrbigmouth:很多時候你不得不在錯誤的基礎上展開工作啊....(遠目) 10/29 13:26
36F:→ chrisQQ:現實啊 (嘆氣) 10/29 13:40