是否可以,如何使用hasClass()
以便我可以搜索以某些指定字符串开头的类?
我想查看多个类,看看是否至少存在一个以字符串开头的类。
string: "old"
这可能,你还可以进行包含或通配符搜索吗?
答案 0 :(得分:4)
选择器将是:[class^=old]
因此:
$('[class^=old]')
[attr^=vvv]
=>选择具有属性attr
的所有元素,其值以vvv
开头。
[attr$=vvv]
=>选择具有属性attr
的所有元素,其值以vvv
结尾。
[attr*=vvv]
=>选择具有属性attr
的所有元素,其值包含vvv
。
Is
不是hasClass
:在您的情况下,is
方法适用于hasClass
以上:
if (element.is('[class^=old]')){
}
而不是
if (element.hasClass('[class^=old]')){
}
$.fn.hasClassStartsWith=function(prefix){
return $(this).is(`[class^=${prefix}]`);
};
然后:
if (element.hasClassStartsWith('old')){
// do your staff
}
答案 1 :(得分:1)
基本上它需要两部分检查。您可以运行选择器来查找包含该单词的任何类。
现在要找到" old"," cold"," bold"。你不能使用的原因始于,因为一个班级可以" foo old"而且这不是从旧的开始。
那么你可以做什么,你可以使用contains,而不是你可以循环并匹配正则表达式来查看classlist是否有一个以它开头的单词。
var elems = $('[class*="old"]').filter( function () {
return $(this).attr("class").match(/(^|\s)old/);
} ).addClass("picked");

.picked { background-color: yellow; }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="old">old</div>
<div class="old-asdf">old-asdf</div>
<div class="foo-old-asdf">foo-old-asdf</div>
<div class="cold">cold</div>
<div class="old foo">old foo</div>
<div class="foo old">foo old</div>
<div class="foo olddoo">foo olddoo</div>
<div class="foo ald">foo ald</div>
&#13;