jQuery匹配hasClass类的一部分
我有几个div与“project [0-9]”类:
我想检查元素是否有“project [0-9]”类。 我有.hasClass("project")
但我坚持使用匹配的数字。
任何的想法?
您可以使用startswith CSS3选择器来获取这些div:
$('div[class^="project"]')
要检查一个特定元素,您可以使用hasClass
.is()
,而不是hasClass
:
$el.is('[class^="project"]')
要使用exact /project\d/
regex,您可以查看jQuery选择器正则表达式或使用
/(^|\s)project\d(\s|$)/.test($el.attr("class"))
对你的html更好的方法是:我相信这些div有一些共同属性。
然后你可以使用:
$('.project')
$('div[class*="project"]')
不会因为这样的事情而失败:
$('div[class^="project"]')
会失败的是这样的:
这是一个扩展jQuery的替代方案:
// Select elements by testing each value of each element's attribute `attr` for `pattern`. jQuery.fn.hasAttrLike = function(attr, pattern) { pattern = new RegExp(pattern) return this.filter(function(idx) { var elAttr = $(this).attr(attr); if(!elAttr) return false; var values = elAttr.split(/\s/); var hasAttrLike = false; $.each(values, function(idx, value) { if(pattern.test(value)) { hasAttrLike = true; return false; } return true; }); return hasAttrLike; }); }; jQuery('div').hasAttrLike('class', 'project[0-9]')
来自sandinmyjoints的原文: https : //github.com/sandinmyjoints/jquery-has-attr-like/blob/master/jquery.hasAttrLike.js (但它有错误所以我修复了它)
你为什么不用它来检查数字
for (var i = 0; i < 10; i++) { if(....hasClass("project"+i)) { //do what you need } }