2013-12-02 4 views
1

я получаю этот XML в $(c):Получить текст XML-с определенным атрибутом

<response name="GetStatistics"><chart chart_num="0">500</chart><chart chart_num="1">1000</chart></response> 

, и я пытаюсь получить значение диаграммы.

Я пробовал:

var val = $(c).find('command[chart_num='+j+']').text(); 
alert ('command[chart_num='+j+'] ' + val); 

Но в оповещении я не получаю значение val вообще.

Что здесь не так?

+1

Изменить 'command' на' chart'? – OlivierH

+0

спасибо ... моя ошибка, извините – user1047069

+0

Возможно, вы захотите добавить тег 'jquery'. – DavidRR

ответ

1

Вы хотите использовать attribute selector.

Так что-то вроде:

var val = $(c).find('chart[char_num=' + j + ']').text(); 

редактировать:

К сожалению, вы с помощью селектора атрибутов. Проблема заключается в переключении команды на график, как указано в комментарии к вопросу.

+0

Неправильный синтаксис с помощью скобок, и вы забыли контекст. – OlivierH

+0

@OlivierH Спасибо, исправлено. – thesquaregroot

0

Во-первых, используйтеparseXML() функцию JQuery, чтобы получить ваш XML-документ:

var xml = "<response name='GetStatistics'>" 
    + "<chart chart_num='0'>500</chart>" 
    + "<chart chart_num='1'>1000</chart>" 
    + "</response>"; 

var xmlDoc = $.parseXML(xml); 
var $xml = $(xmlDoc); 

Затем используйте Attribute Equals Selector выбрать chart элемент его chart_num атрибута:

var j = 1; 
var chartNumValue = $xml.find('chart[chart_num=' + j + ']').text(); 
// chartNumValue = 1000 

Кроме того, вы может оказаться полезным для obtain an array всех ваших значений атрибутов chart_num:

var $charts = $xml.find('chart'); 

var chartNums = $.map($charts, function(el) { 
    return $(el).attr("chart_num"); 
}); 
Смежные вопросы