2013-11-15 3 views
1

Мой код: http://codepen.io/vincentccw/pen/ecJDGКак получить множественные значения атрибутов jquery?

В основном то, что я хочу, чтобы получить все ли данные значения атрибутов из атр вызова данных дизайнера

Там, предполагают, чтобы быть 4 из них, но я могу получить только с использованием:

var dsad = $('ul').attr("data-designer"); 

Как исправить это?

ответ

2

Вы можете использовать each() взаимодействовать с каждым элементом в отдельности:

$('ul').each(function(){ 
    console.log($(this).data('designer')); 
}); 

Или вы можете использовать map() создать массив всех значений, которые вы можете иметь дело с себе parately:

var designers = $('ul').map(function() { 
    return $(this).data('designed'); 
}); 
console.log(designers); 

Обратите внимание, я использовал data, чтобы получить data-* атрибуты как это происходит быстрее, чем доступ к атрибутам элемента DOM напрямую.

+0

Вы уверены, что 'data()' быстрее, чем 'attr()'? Он должен быть медленнее, по крайней мере, для первого вызова, так как он должен перечислить весь атрибут 'data-' для построения своего кеша. –

+0

Я не сделал никакого конкретного тестирования, но я считаю, что jQuery создает кеш на DOMReady. Я готов быть ошибочным, хотя;) –

+0

Из исходного кода это похоже на первый вызов (и перечисление всего на DOMReady приведет к заметной потере производительности IMHO). –

2
$('ul').each(function(){ 
    console.log($(this).attr('data-designer')) 
    //you can add to an array also 
}); 
1

Вы должны использовать .each()

$('ul').each(function(){ 
    console.log($(this).attr("data-designer")); 
}); 

Codepen Demo

1

$('ul').attr("data-designer") только что получил атрибут для первого элемента ул. Если получить все ULS с "data-designer" атрибутом, попробуйте следующее:

$('ul[data-designer]').each(function(){ 
     console.log($(this).attr("data-designer")); 
}); 
2

Вы можете использовать map() проецировать значения атрибутов в массив:

var designers = $("ul").map(function() { 
    return $(this).attr("data-designer"); 
}).get(); 
Смежные вопросы