检查选择器是否与特定类标记的元素匹配

时间:2011-09-09 10:42:02

标签: jquery dom jquery-selectors traversal

我有一个通用的jQuery选择器(一个字符串):

var selector = '#files li div';

和班级名称:

var myClass = 'folder';

我想检查选择器是否匹配具有存储在 myClass 中的类的元素。 到目前为止,我使用了一个选择器实例来调用方法hasClass():

var match = $(selector).hasClass(myClass);

它有效,但我认为它可能存在一些更有效的jQuery方法,它允许不创建一个jQuery实例来获取选择器匹配的所有元素。
我担心的是仅为此检查创建的实例所使用的内存,仅此而已,但是它在伪类的方法中,不会返回/公开对此实例的任何引用。

你能提出更好的建议吗?

<编辑>
在示例中显示我将 myClass 的值设置为“文件夹”只是为了轻松地表示问题,但在应用程序中我不提前知道它,因为它是由用户操作定义的。 /> 的< /编辑>

2 个答案:

答案 0 :(得分:3)

如果匹配元素的任何具有指定的类,

hasClass()将返回true;如果所有的话都没有。

您可能会发现以下内容更符合您的要求:

var match = $(selector).filter('.' + myClass);

但你可以将其简化为:

var match = $(selector + '.' + myClass);

然后,您可以使用.length属性检查是否还有任何元素。

if (match.length) // then some were matched!

在担心内存使用方面...... premature optimization is the root of all evil。这里的内存使用量是很小。如果你想优化你的程序(目前是否需要?),查看被调用很多次的函数,或者查看具有大量迭代的循环,或者查看DOM操作并查看是否他们可以合并;一个jQuery选择器不会以相对的方式对程序的速度产生任何差异。

答案 1 :(得分:0)

为唯一性分配Id 要么 如果要在多个实例上应用

,请创建一个类