2016-11-08 160 views
-1

我有一些css類應用於body,我想獲得一個動態更改的特定類。所以,它是這樣的:jquery獲取或找到動態CSS屬性

<body class="apple mango guava lime-1"> 

我想要得到的是1

現在,lime-1可能會更改爲lime-2另一次。所以,我想要的是搜索正文中所有CSS類的方法,然後檢查lime-是否存在,並在連字符後獲取下一個值。

我已經做到了這一點: var classes = $('body').attr('class');

感謝

+2

如果可以,我建議你改變你的邏輯。而不是依賴於類中的元數據,將其添加爲可直接讀取的「data-*」屬性,而不必通過應用的類名進行篩選 –

回答

3

使用String#splitArray#forEachString#match方法和做這樣的事情。

var num; 
// get class attribute and split them into individual 
// and iterate 
$('body').attr('class').split(' ').forEach(function(v){ 
    // check for match 
    var m = v.match(/^lime-(\d+)$/); 
    // if matched get the captured value 
    if(m && m.length) 
    num = m[1]; 
}); 

console.log(num); 

UPDATE:可以使用更好的正則表達式,使其更加簡單。

var num; 
var m = $('body').attr('class').match(/\(?^|\s)lime-(\d+)(?:\s|$)/); 
// if matched get the captured value 
if(m && m.length) 
    num = m[1]; 

console.log(num); 
+0

感謝@Pranav,它的工作原理 – davexpression

+0

@davexpression:很樂意提供幫助: ) –

0

您可以得到該課程,然後切出您不想要的區域。當然,DIV你的情況將是body

$(document).ready(function() { 
 
var classes = $('div').attr('class'); 
 
alert(classes[classes.length -1]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="apple mango guava lime-1"><div> 
 

 
</div>

+0

這將適用於示例中特定的一組類名,但OP已聲明它們是動態的。如果課程是「蘋果芒果foo-1番石榴」,這將如何工作? –

+0

@Rorry如果最後一部分是唯一改變的東西,這個解決方案就可以工作。 –

+0

@Rory McCrossan會改變它的工作? –

0
$("[class|='lime']").attr("class").slice(-1); 

6.3. Attribute selectors

[att|=val]

代表與ATT屬性的元素,它的值EIT她是 正好「val」或以「val」開頭,緊接着是「 - 」 (U + 002D)。這主要是爲了允許在BCP 47([BCP47])或其後繼中描述 的語言子代碼匹配 (例如,HTML中a元素上的hreflang屬性)。對於lang(或xml:lang)語言的 子碼匹配,請參閱:lang僞類。