Выберите значения атрибутов в списке - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть следующий xml:

<ListOfItems>
   <item myval='123' />
   <item myval='342' />
   <item myval='233' />
   <item myval='444' />
</ListOfItems>

Я анализирую / обхожу его с помощью jQuery. Что такое селектор, который дал бы мне список всех значений в атрибуте «myval» узлов «item». Я ищу то, что вернуло бы мне только список значений. Может быть массив ['123,' 342 ',' 233 ',' 444 ']

Ответы [ 4 ]

2 голосов
/ 28 сентября 2011

Учитывая, что я не думаю, что это допустимые элементы, я бы предложил:

var listOfValues = [];

$('ListOfItems > item').each(
    function(){
        listOfValues.push($(this).attr('myval'));
    });

При желании использовать один селектор, возможно следующее:

var myvals = $('li').map(
    function(){
        return this.getAttribute('myval');
    }).get().join(', ');

JS Fiddle Demo .

1 голос
/ 28 сентября 2011

Используйте функцию .map().

var listOfItems = $('ListOfItems items').map(function() {
    return $(this).attr('myval');
});

Это действительно изящная функция (наряду с $.map()), которую многие люди упускают.

Просто имейте в виду, что он возвращает объект jQuery, поэтому, если вы хотите получить в свои руки возвращаемый массив raw , вам придется получить к нему доступ через listOfItems.get().

1 голос
/ 28 сентября 2011
var data = new Array();
$(xml).find('item').each(function() {
   data.push($(this).attr('myval'));
});

, где xml - ваш xml-контент.

или:

var array = $(xml).find('item').map(function() {
       return $(this).attr('myval');
    }).get();
1 голос
/ 28 сентября 2011

Вам нужно будет перебрать список предметов. Например:

var itemsArray = [];
$("ListOfItems").each(function(index) {
    itemsArray[index] = $(this).attr('myval');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...