作者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