2017-07-25 42 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); 
相关问题