2016-07-25 50 views
0

想知道是否有办法扩展以下代码以允许搜索类似的类但不是确切的。检查是否存在与Jquery相似的类(但不是确切的)类

我的目标:匹配FOO-123和酒吧-123和类追加到链接带班巴-123以表明它是匹配:

页的结构:

(富。 - 和酒吧,是预先设置的都是一样的,只有数字的变化)

<body class="foo-123"> 
<a href="#" class="bar-123">Item 123</a> 
<a href="#" class="bar-456">Item 456</a> 
<a href="#" class="bar-789">Item 789</a> 
</body> 

问题:目前只有完全匹配项工作:

$('a').each(
function(i) { 
    var classes = this.className.split(/\s+/); 
    for (var i=0,len=classes.length; i<len; i++){ 
     if ($('body').hasClass(classes[i])){ 
      $(this).addClass('bodySharesClass'); 
     } 
    } 
}); 

jsfiddle example

预先感谢您。

编辑:快速注意,这个问题不同于其他职位,因为前缀已设置但数量未知。我发现的其他问题都集中在找到班级中的特定班级或特定单词。 @madalin ivascu的回答很完美,@ Braj的评论也很有帮助,谢谢!

+0

的可能的复制:([jQuery的使用个人类名选择 '开头'] http://stackoverflow.com/questions/2178416/jquery -using-starts-with-selector-on-individual-class-name) – 4castle

+0

拆分并从body类中获取数字,并使用**结尾符合** css选择符。 [仅供您参考](https://api.jquery.com/attribute-ends-with-selector/)属性结束于选择器[name $ =“value”] – Braj

回答

1

尝试下面的循环

$('[class^=bar]').each(function(i,v){ 
    var numb = $(this).attr('class').split('-')[1]; 
    if ($('body').is('.foo-'+numb)) { 
    $(this).addClass('bodySharesClass'); 
    } 
}); 

demo