當一個元素有多個類時,是否有可能在jquery中從模式中獲取類。從多個正則表達式/模式獲取類
例如
<body class="class-a class-b class-c id-1">
類id-1
在運行時是不知道,但我想獲得該類只知道會有一類「ID-」,然後ID的模式。
基本上我想要在上面的例子中返回的數字1。
在這個例子中,我會希望有一個6號返回:
<body class="class-a class-b class-c id-6">
當一個元素有多個類時,是否有可能在jquery中從模式中獲取類。從多個正則表達式/模式獲取類
例如
<body class="class-a class-b class-c id-1">
類id-1
在運行時是不知道,但我想獲得該類只知道會有一類「ID-」,然後ID的模式。
基本上我想要在上面的例子中返回的數字1。
在這個例子中,我會希望有一個6號返回:
<body class="class-a class-b class-c id-6">
var klass = document.body.className.match(/\bid\-\d+/)[0];
得到的只是在最後,你可以做數量:
var numb = klass.split('-').pop();
但如果你甚至不確定是否會有一個數字或一個班級,你應該做一些錯誤哈ndling還有:
klass = klass.length ? klass[0].indexOf('-') ? klass[0].split('-').pop() : null : null;
可能需要在'\ d'上用'+'來表示多位數字。 –
@JamesMontagne--對此不太確定,我最初爲兩位數字添加了{2},但刪除了它,因爲問題只提到了一位數字,但我將添加+,因爲這樣可以以任何方式工作。 – adeneo
您可以.attr('class')
標籤
$('body').attr('class')
然後返回班檢查,如果發現匹配,你可以申請你的正則表達式
/\s+id\-(\d+)\s+/.exec($('body').attr('class'))
,所需身份證號碼將在返回的陣列的位置1
您的答案也將與'void-1'類匹配。你需要檢查一個字的邊界。 – Barmar
你是對的,編輯。 –
也許類似於thi S'它會使用一個ID,而不是一個類,我認爲這可能有點「更清潔」。
HTML:
<div class="class-a class-b class-c" id="item-6"></div>
JS:
var $item = $('.class-a.class-b.class-c');
var number = parseInt($item[0].id.substring(5), 10);
console.log(number);
小提琴:http://jsfiddle.net/S8vRr/
它得到與該類模式的所有元素,則提取從第一個元素的id的整數該集。
編輯:剛剛閱讀您對OP的評論;好像你不能設置任何ID。這個答案可能在理論上起到了作用,但不幸的是您的情況並非如此。
假設你必須應用到你可以使用body
元素至多一個id-...
類:
var classData = document.body.className.match(/\bid\-\d+\b/),
numberData = classData && classData[0].substring(3);
numberData
將null
如果不存在這樣的匹配。
var num;
var c = $("body").attr("class").split(" ");
$(c).each(function(index,value){
if($(c)[index].match(/^id-/)){
num = $(c)[index].replace(/^id-/,"");
return false;
}
});
不要喲權限修改底層代碼?數據屬性會好得多。類似於'data-id =「6」'。 –
不幸的不是。這是一個恥辱,因爲我同意這將是一個更好的方法 –