2017-07-25 69 views
-1

的考慮下面的HTML標記:如何選擇一個特定的CSS類名稱的一部分了多類

<div id="my-id" class="my-class items-5"/> 

我如何可以提取類屬性的5,如果5是動態生成的? 我大概可以做的' '分裂並引用'-'第二索引的索引,但這似乎如此長篇大論:

var count = $("#my-div").attr("class").split(' ')[1].split('-')[1]; 
+0

'項目-5'是你的動態類? –

+0

@chirag,是的,'5'是動態的 –

+0

我懷疑你並不真的需要提取它,但這取決於你爲什麼要提取它,你沒有給我們提供任何有關 –

回答

0

一個固定的標記,你不能改變另一種解決方案,並假設相關類總是items-number被拆分通過items-,然後得到它後面的第一個單詞:

var count = $("#my-id").attr("class").split('items-')[1].split(' ')[0]; 
 
console.log(count); 
 

 
var count2 = $("#my-id2").attr("class").split('items-')[1].split(' ')[0]; 
 
console.log(count2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="my-id" class="my-class items-5"/> 
 
<div id="my-id2" class="my-class items-23 another-class"/>

這也將工作更多的類和不同的排序。

0

考慮到這是一個單一的數字。

var divClass = $("#my-div").attr("class"); 
 
var digit = divClass.substr(-1);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="my-div" class="my-class items-5"/>

+0

如果'item-5'總是最後一個類,這將工作。可能是'item-5'後面還有其他的類,例如:'class =「my-class items-5 another-class」' –

+0

確實如此。根據上面的HTML示例,這是您的解決方案的替代方案。對於其他標記索引,分割將會更好。 – mtt

0

試試這個 https://jsfiddle.net/fm7dp4ht/

var count; 
var parsed; 
var classList = document.getElementById('my-id').className.split(/\s+/); 
for (var i = 0; i < classList.length; i++) { 
    if (parsed = classList[i].match(/^items-([0-9]*)$/)) { 
     count = parsed[1]; 
     break; 
    } 
} 
alert(count);