2016-07-25 60 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