jQuery: получить имя класса из мультикласса - PullRequest
0 голосов
/ 04 марта 2012

Я выбрал следующий элемент.Как лучше всего получить имя класса icon_23123?

<div class="icon icon_23123"></div>

Есть ли что-то вроде [class ^ = "icon_"] для выбора атрибутов вместо элементов?Или я должен получить все имена классов и перебрать их, чтобы найти тот, который начинается со значка _?

РЕДАКТИРОВАТЬ: я хочу написать функцию, которая получает любое имя класса, начинающееся с icon_, и только эти имена классов.В конечном счете, я хочу получить часть после подчеркивания, но это не обязательно числовое значение. Я планировал использовать регулярное выражение (эти имена классов являются регулярными.)

EDIT2: элемент, который я пытаюсь получитьимя класса из уже выбрано, мне просто нужно имя класса из него (не каждый элемент в документе с class = "icon _.....")

EIDT3: Моя настоящая проблема заключалась в том, что я смешалданные и стиль.Так как я не хочу поддерживать старые браузеры, я использую data-id для хранения идентификатора этого набора данных.

<div class="icon icon_23123" data-id="23123"></div>

Ответы [ 2 ]

3 голосов
/ 04 марта 2012

Если вы используете классы для хранения данных, HTML5 предоставляет более удобный способ присоединения данных к элементу - data- атрибутов .Например:

<div class="icon" data-id="23123"></div>

Затем вы можете прочитать атрибут напрямую (наиболее кроссбраузерно):

var id = myelement.getAttribute('data-id');

или использовать собственный datasetобъект свойства:

var id = myelement.dataset.id;

или использовать метод jQuery data() для старых браузеров (IE10 -):

var id = $(myelement).data('id');

Можно также использоватьтот же атрибут data- для прикрепления отдельных стилей к элементу с помощью селектора атрибута, например .icon[data-id="23123"].

1 голос
/ 04 марта 2012

используйте .attr () в сочетании с .each ():

$('[class^="icon_"]').each(function () { console.log($(this).attr('class'); });

Это передает все элементы, которые имеют имя класса, начинающееся с icon_, и передают его каждой функции. Затем вы можете получить доступ к атрибуту элемента, используя .attr. Если вам нужен только доступ к n-му элементу, вы можете использовать $('[class^=icon_]:eq(n)').attr('class')

edit (ответ на комментарий):

var classes = $(selectedElement).attr('class'),
    iconIndex = classes.indexOf('icon_'),
    iconIndex2 = classes.indexOf(' ', iconIndex),
    theClassName = classes.slice(iconIndex, (iconIndex2 > -1) ? iconIndex2 : undefined)

Документация по API: каждый attr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...