2013-10-11 4 views
0

Можно ли захватить пользовательский атрибут, как это «что-то-20»захватить значение пользовательского атрибута

сказать, например, что в <div class="somecustomClass something-20"></div>

Я хочу град 19, так что я могу управлять ею, потому что CSS имеет блок от чего-1 к чему-100

Я использовал ниже код, чтобы получить вкладку ID:

tabId = $('li').find('a').attr('href').replace('#tab', ''); 

это такое же подход?

ответ

4

Это не настраиваемый атрибут, это класс. Вам нужно будет получить всю строку класса, а затем, вероятно, используйте регулярное выражение, чтобы найти нужное значение.

Было бы проще использовать data- атрибуты:

<div class="somecustomClass" data-something="20"></div> 

JS:

var value = $('.somecustomClass').data('something'); // 20 
+1

+1 Вы избили меня, чтобы опубликовать почти идентичный ответ: D –

+0

@RoryMcCrossan Woot! Вау, это почти одинаковые ответы. –

+0

Это просто жутко. – tymeJV

0

Если вы хотите, чтобы это было специального атрибута я предлагаю вам сделать то, что сказал Джейсон в своем ответе. Но если вы хотите захватить элементы something-# и сделать что-то с ними, вы можете сделать следующее.

for(var i=1;i<=100;i++) { 
    var el = $('.something-'+i); 
    //do something with the element to manipulate it 
} 
0

Похожие. То, что делает табуляция, - это 3 вещи

Часть 1 выбирает правый элемент.

Часть 2 получает значение атрибута, который содержит данные, которые мы хотим

Часть 3 получает конкретный бит данных, которые мы хотим с регулярным выражением

Для части 1, я m не уверен, что вы используете, чтобы идентифицировать эти блоки, чтобы их выбрать.

У вас может быть $ ('[class^= "something"]'), чтобы получить все элементы, у которых есть класс, который начинается с текста «что-то», но это будет довольно медленно. Если вы можете использовать что-то вроде $ ('. SomecustomClass'), он будет работать лучше.

Если вы просто хотели, чтобы адаптировать первый найденный элемент, который попадался, вы могли бы сделать это:

вар MyNumber = $ (». SomecustomClass') [0] .className.replace (/.* \ bsomething \ - (\ d +). */gi, "$ 1");

Извинения, если вы уже знакомы с регулярными выражениями, но и для других читателей, что это расстройство того, что он делает:.

*? означает не-жадно выбирать нуль или больше символов, \ b означает границу слова, тогда он находит текст «что-то», за которым следует одна или несколько цифр. Помещение скобок вокруг него фиксирует то, что там находит. На всякий случай, если у вас есть классы после этого, он имеет. *, Чтобы получить нуль или больше символов, чтобы найти их тоже./gi в конце этого означает глобальный просмотр через класс, а i означает нечувствительность к регистру. $ 1 как второй аргумент функции replace - это зафиксированные цифры.

+0

хороший ответ! но регулярное выражение - способ перегрузки. просто чтобы получить диапазон значений int от 1 до 100 –

Смежные вопросы