我在代码中找到它,不知道使用*.class
选择器的选择器在.class
选择器上有什么用处。是否有任何理由在'.class'上使用selector'* .class'?
回答
无论在jQuery(Sizzle)选择器上下文还是CSS选择器上下文中都没有意义。在元素匹配和特异性方面,*.class
和.class
都是等价的。
*
字符仅在被自身用于引用任何元素时才有意义;这意味着你使用任何其他简单的选择器而没有类型选择器。 即使那么,如果有的话,您很少会发现自己需要将事件挂钩或操作DOM上每个元素的属性。
如果你打算使用类,伪类,ID等,那么没有通用选择器的地方,因为选定的元素将被相应地过滤掉。
此外,这里是一个使用*
有其他选择的一个缺点,从jQuery documentation报价:
注意:所有或通用,选择是极其缓慢的,在使用时其本身除了。
这里还有什么Selectors spec说:
如果*代表的通用选择器(即没有命名空间前缀)是不是一个sequence of simple selectors选择的唯一部件或后面紧跟着一个pseudo-element,那么*可能被忽略,并且通用选择器的存在隐含。
实例:
*[hreflang|=en]
和[hreflang|=en]
是等价的,*.warning
和.warning
是等价的,*#myid
和#myid
是等价的。
它们大致相当 - 星号仅进一步指定将该选择应用于哪个对象。
.class // Selects all of the specific class
*.class // Selects all of the specific class - where * can be a div, li, etc.
没有,没有任何理由指定*.class
超过.class
*
是通配符,并表示“这适用于任何”不过这只是本机选择行为。
但是,它可能已被人谁试图在面前明确书面补充说:
不要选择特定元素类型,但匹配所有元素类型
但是,如果您的内部正常的代码组织的类型为这只成立:
$('div.class')
$('a.class')
$('a:first')
等
就没有优势获得了 - 我觉得这是一个性能问题,如果您使用其它选择通配符:
比注意:所有或通用, 选择是非常缓慢,除了自己使用 。
其他 - 没有区别
我认为是这样,但我认为在这种情况下,jQuery会优化它。 http://jsperf.com/starsss,因为这个调用只是'document.getElementsByClass'的基本包装。 – Yahel 2011-03-22 15:40:43
- 1. 是否有任何理由使用System.Uri?
- 2. 是否有任何理由使用[:over @:?
- 3. 是否有任何理由使用isset()?
- 4. 是否有任何真正的理由在Uitextfield上使用UiSearchBar?
- 5. 何时使用class :: function或class->函数,是否有首选方法?
- 6. “Class myclass = Class()”是否浪费资源?
- 7. (“Child Class”是“Parent class”)
- 8. 是否有任何理由使用等待和异步马上?
- 9. 是否有任何理由在C#中使用私有属性?
- 10. isJavaType(Class class)or isUserType(Class class)?
- 11. caseElass(i)`case-class是否使用反射?
- 12. 是否有任何理由在Swift中使用选择器?
- 13. 是否有任何理由在微软ISV中使用TFS 2010?
- 14. 是否有任何理由在两个MemoryStream之间使用CopyToAsync
- 15. 是否有任何理由在VBA中使用ENUM?
- 16. 是否有可能获得由Class :: DBI生成的SQL语句?
- 17. Class如何可以是Class类并且没有Class实例方法?
- 18. Typescript的/ ** @class * /是否有目的?
- 19. 没有调整函数调用class :: class
- 20. 是否有任何理由Object.freeze函数?
- 21. 在Class中Class Class <:: OtherClassName是做什么的?
- 22. 是否有任何理由使用SGML而不是XML?
- 23. C++:是否有任何理由使用uint64_t,而不是size_t
- 24. C++一元运算符在类上使用的是什么意思? (Class :: Class)
- 25. 是否可以在没有关系的数据库上使用DBIx :: Class?
- 26. 是否有任何理由不在生产数据库上使用Rails迁移?
- 27. 使用字符串变量设置'Class = new <Class of Class()>''
- 28. 是否有任何理由对群集使用锁文件?
- 29. 是否有任何理由不使用INLINABLE pragma作为函数?
- 30. 是否有任何理由,你为什么会使用document.writeln
重新性能,我认为这是一个主要的区别,但我认为jQuery在这种情况下优化它。 jsperf.com/starsss是一个基本的例子。我猜是因为这个调用只是document.getElementsByClass的一个基本包装? – Yahel 2011-03-22 15:42:55
@yc:有时jQuery可能会把它交给'getElementsByClass','getElementById'或'querySelectorAll'。尽管如此,无论是由jQuery还是由浏览器的选择器引擎处理,“*”仍然在显微镜下仍然非常慢。 – BoltClock 2011-03-22 15:44:43
是的,完全。根本没有理由在这里添加'*'。想都不用想。 (+1) – Yahel 2011-03-22 15:53:31