Разделите класс с помощью jquery / js - PullRequest
0 голосов
/ 13 декабря 2010

Скажем, я хочу получить число со спины класса, например: aside300 - я бы взял 300 и присвоил бы его переменной, или aside320 назначил бы 320 переменной.Пока что у меня есть следующий бит jQuery:

$('[class*=aside]').each(function(index) { // For each of the elements that have a class containing aside
        var asidenum = $(this).attr('class') // Grab all the classes on that element
                              .split("aside") // Split at aside
                              .pop(); // Pop the last item from the array (if aside is the last class then this is great, if not - not so great)
});

Но, как вы, вероятно, видите, это не сработает, если у вас есть что-то после класса 'aside' - Если ваши классы в элементе,например, «aside300 anotherclass» - переменная будет «300 anotherclass»

Я думал о простом разбиении пространства, которое назначает каждый класс в массив, но тогда я не уверен, как получить только«в сторону» и разделите его, чтобы взять число ...

Если у кого-то есть какие-либо указатели, или если я делаю это совершенно неправильно, это было бы здорово!

Ура

РЕДАКТИРОВАТЬ: Поскольку люди предложили атрибут данных, да, я хотел бы использовать его, это была одна из моих первых мыслей, но, к сожалению, это не вариант.

Ответы [ 3 ]

4 голосов
/ 13 декабря 2010

Если data- атрибуты являются опцией, вы можете сделать это:

<div class="aside" data-aside="320">

Тогда вы можете сделать это:

$('.aside').each(function() {
  var asidenum = $(this).data('aside');
});

Или в jQuery <1.4.3 используйте взамен <code>.attr('data-aside') ... из вышеприведенного видно, что у него есть несколько преимуществ: более простой код, класс CSS, который вы можете использовать, и много более эффективный селектор.

Это совершенно верно в HTML5, это не , верно , но работает нормально, без проблем в HTML4.

4 голосов
/ 13 декабря 2010

Вы можете сделать это так:

var num = $(this).attr('class').match(/\baside(\d+)\b/)[1];

Но я настоятельно рекомендую изучить атрибуты данных и API-интерфейс jQuery для них .

0 голосов
/ 13 декабря 2010

Используйте регулярное выражение \ baside ([0-9] +) \ b для классов, чтобы захватить число.

...