0

当一个元素有多个类时,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">
4

5 回答 5

0

您可以检查.attr('class')标签的返回类

$('body').attr('class')

然后你可以应用你的正则表达式

 /\s+id\-(\d+)\s+/.exec($('body').attr('class'))

如果找到匹配项,则所需的 id 号将位于返回数组的位置 1

于 2013-09-29T20:47:02.220 回答
0

也许是这样的?它将使用一个 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。这个答案在理论上可能有效,但不幸的是不适用于您的情况。

于 2013-09-29T20:47:05.687 回答
0
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;
于 2013-09-29T20:43:59.323 回答
0

假设您最多将一个id-...类应用于body您可以使用的元素:

var classData = document.body.className.match(/\bid\-\d+\b/),
    numberData = classData && classData[0].substring(3);

numberDatanull如果不存在这样的匹配项,将是。

于 2013-09-29T21:01:34.947 回答
0
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;
    }
});

http://jsfiddle.net/itsmikem/h29p4/3/

于 2013-09-29T21:14:38.980 回答