我有以下div标签结构,每个div标签都有多个类,如: -
<div>
<div class="jsh-a_train_hotel_amsterdam info js-multiple"></div>
<div class="jsh-info info js-multiple"></div>
<div class="jsh-myinfo info js-single"></div>
</div>
现在我想找到类名以“jsh-”开头的div标签,而且以“jsh-”开头的类应该有一个子串“info”。
所以结果如下: -
<div class="jsh-info info js-multiple"></div>
<div class="jsh-myinfo info js-single"></div>
(原因:因为上面的2个div标签有类jsh-info和jsh-myinfo,它们满足元素类名称应该具有“jsh-”的条件,并且“jsh-”类名称值中的子字符串应该具有字符串“info”在其中)
答案 0 :(得分:1)
试试这个
var elems = $('div[class^="jsh"]').filter(function(){
return $(this).attr('class').match(/jsh[^ ]info/)
});
或者更好地使用以下内容jsh-info
可以出现在class
属性值
var elems = $('div[class*="jsh"]').filter(function(){
return $(this).attr('class').match(/\s*jsh[^ ]info/)
});
您不需要在filter()
内的元素上应用任何jquery函数,不需要将DOM元素转换为jQuery对象。所以你可以使用
return this.className.match(/\s*jsh[^ ]*info/)
而不是
return $(this).attr('class').match(/\s*jsh[^ ]info/)
如果您不想硬编码info
并希望将其替换为变量,则可以执行以下操作
var theVar = 'info';
$('div[class*="jsh"]').filter(function () {
return this.className.match(new RegExp('jsh[^ ]*' + theVar, 'gi'))
})
答案 1 :(得分:0)
尝试类似$('div[class^="jsh-"]').filter('div[class*="info"]')
的内容,第一个选择器为start with
,第二个选择器为contains
。