如何使用jQuery将类的一部分用作变量

时间:2011-06-15 20:01:24

标签: jquery jquery-selectors

我有一个像这样的元素:

<ul class="MainMenu_SubMenu m m0 mid157">

我需要获取 mid157 并使用 157 将变量用于其他内容,即:

$('SomeOtherElement157')

所以我的问题是如何将类名作为变量,然后删除所有数字?这些类是生成的,所以有些人有更多,有些人有更少,但他们都会有中等...

5 个答案:

答案 0 :(得分:5)

var className = $('ul').attr('class'),
    midNum = /\bmid(\S+)/.exec(className)[1],
    selector = 'SomeOtherElement' + midNum;

$(selector);

适用于以下所有方面:

<ul class="MainMenu_SubMenu m m0 mid157"></ul>
<ul class="mid158"></ul>
<ul class="mid159 MainMenu_SubMenu m m0"></ul>
<ul class="MainMenu_SubMenu mid160 m m0"></ul>

演示:http://jsfiddle.net/mattball/P3G8H/

答案 1 :(得分:0)

var nums = 
    document.getElementsByTagName('ul')[0]
                .className.match(/.*mid(\d*)/)[1];

$('selector' + nums);

答案 2 :(得分:0)

您可以使用grep:

var classes=$("div").attr("class").split(" ");

var matches = jQuery.grep(classes, function(n, i){
  return n.indexOf("mid")===0;
});

if(matches[0]){
    var number=matches[0].substring(3);

    // do something with that number 
}

答案 3 :(得分:0)

var patt1   = /mid(\d+)/,
    matches = $('ul').attr('class').match(patt1);

if (matches != undefined && matches[1] != undefined) {
    $('SomeOtherElement'+matches[1]);        
} else {
    alert("No matches.");   
}

答案 4 :(得分:0)

var id = $("div").attr("class").match(/mid([\d]+)/gi)[0].replace("mid", "SomethingElse");

alert(id);

http://jsfiddle.net/bkSFf/