Как использовать часть класса в качестве переменной с помощью jQuery - PullRequest
1 голос
/ 16 июня 2011

У меня есть такой элемент:

<ul class="MainMenu_SubMenu m m0 mid157">

Мне нужно получить mid157 и использовать это 157 для переменной для чего-то другого,то есть:

$('SomeOtherElement157')

Итак, мой вопрос: как получить имя класса в качестве переменной и затем удалить все, кроме числа?Классы генерируются, поэтому у некоторых их больше, а у некоторых меньше, но у всех будет эта середина ...

Ответы [ 5 ]

5 голосов
/ 16 июня 2011
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/

0 голосов
/ 16 июня 2011
var id = $("div").attr("class").match(/mid([\d]+)/gi)[0].replace("mid", "SomethingElse");

alert(id);

http://jsfiddle.net/bkSFf/

0 голосов
/ 16 июня 2011
var patt1   = /mid(\d+)/,
    matches = $('ul').attr('class').match(patt1);

if (matches != undefined && matches[1] != undefined) {
    $('SomeOtherElement'+matches[1]);        
} else {
    alert("No matches.");   
}
0 голосов
/ 16 июня 2011

Вы можете использовать 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 
}
0 голосов
/ 16 июня 2011
var nums = 
    document.getElementsByTagName('ul')[0]
                .className.match(/.*mid(\d*)/)[1];

$('selector' + nums);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...