hasClass()以字符串开头

时间:2016-07-21 00:07:11

标签: javascript jquery css

是否可以,如何使用hasClass()以便我可以搜索以某些指定字符串开头的类?
我想查看多个类,看看是否至少存在一个以字符串开头的类。

string: "old"

这可能,你还可以进行包含或通配符搜索吗?

2 个答案:

答案 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]')){


  }

JQuery插件:

$.fn.hasClassStartsWith=function(prefix){
    return $(this).is(`[class^=${prefix}]`);
};

然后:

if (element.hasClassStartsWith('old')){
     // do your staff
}

DEMO

答案 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;
&#13;
&#13;