我有一个通用的jQuery选择器(一个字符串):
var selector = '#files li div';
和班级名称:
var myClass = 'folder';
我想检查选择器是否匹配具有存储在 myClass 中的类的元素。 到目前为止,我使用了一个选择器实例来调用方法hasClass():
var match = $(selector).hasClass(myClass);
它有效,但我认为它可能存在一些更有效的jQuery方法,它允许不创建一个jQuery实例来获取选择器匹配的所有元素。
我担心的是仅为此检查创建的实例所使用的内存,仅此而已,但是它在伪类的方法中,不会返回/公开对此实例的任何引用。
你能提出更好的建议吗?
<编辑>
在示例中显示我将 myClass 的值设置为“文件夹”只是为了轻松地表示问题,但在应用程序中我不提前知道它,因为它是由用户操作定义的。 />
的< /编辑>
答案 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 要么 如果要在多个实例上应用
,请创建一个类