我有很多迭代,我想检查myObject是否有.example类。我可以使用在初始化时预定义为$(‘.class’)的templateObject来完成此操作:
if(myObject.Is( templateObject )
{
//Do stuff
}或者,我可以直接使用类名:
if(myObject.Is( '.example' )
{
//Do stuff
}所以我想知道第二个例子是让jQuery在每次迭代中都通过DOM进行搜索,还是以更优的方式进行比较?哪一个例子更好?
发布于 2016-09-25 03:05:21
IMO hasClass()在这里更有效,它是专门为此目的而设计的。
if (myObject.hasClass('example')){
// Code
}发布于 2016-09-25 03:12:50
你的两个例子是不一样的。如果调用$('.example'),您将找到具有类.example的所有元素,如果您将其用作myObject.is(templateObject)的测试,那么您将测试jQuery结果集myObject中的一个元素是否等于结果集templateObject中的一个元素。因此,如果存储在myObject中的DOMElements不在templateObject列表中,因为它们是稍后添加的,那么即使myObject具有example类,is也会返回false
使用myObject.is( '.example' )测试是否可以使用选择器.example找到元素myObject (它不会执行完整的DOM搜索,它将从给定元素开始-如果选择器更复杂-只遍历其父级)。这将始终有效,但正如其他人已经提到的,如果您想测试myObject是否具有某个类,那么您应该使用hasClass
https://stackoverflow.com/questions/39679919
复制相似问题