当一个元素有多个类时,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">
您可以检查.attr('class')
标签的返回类
$('body').attr('class')
然后你可以应用你的正则表达式
/\s+id\-(\d+)\s+/.exec($('body').attr('class'))
如果找到匹配项,则所需的 id 号将位于返回数组的位置 1
也许是这样的?它将使用一个 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。这个答案在理论上可能有效,但不幸的是不适用于您的情况。
var klass = document.body.className.match(/\bid\-\d+/)[0];
要获得最后的数字,您可以执行以下操作:
var numb = klass.split('-').pop();
但是如果你甚至不确定是否会有一个数字或一个类,你可能也应该做一些错误处理:
klass = klass.length ? klass[0].indexOf('-') ? klass[0].split('-').pop() : null : null;
假设您最多将一个id-...
类应用于body
您可以使用的元素:
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;
}
});