Выбор значений из DOM / XML с помощью селекторов Jquery - PullRequest
1 голос
/ 22 марта 2012

У меня следующий структурированный результат DOM, получаемый после события POST:

<root>
  <config>
      // Some inner tree
  </config>
  <test>
    <test testValue="0">
      <id>90</id>
      <time>false</time>
      <config>
        <config1>1</config1>
      </config>
      <languages>
        <language id="en" isDefault="true" >
          <test22 text=""  />
          <test23 text=""  />
        </language>
      </languages>
      <answers>
        <answer>
          <id>201</id>
          <Texts>
            <Text localeId="en" Text="Yes" />
          </Texts>
        </answer>
        <answer>
          <id>202</id>
          <Texts>
            <Text localeId="en"Text="No" />
          </Texts>
        </answer>
      </answers>
    </test>
  </test>
</root>

Приведенный выше DOM возвращается после вызова $ .get (url, function (XML)), и я могу сделать это:

Получение текста (Да, Нет) и идентификатора (201, 202) со следующим кодом.

    $(XML).find("answer").each(function(){
        var textValue = $(this).find("Text").attr("Text");
        var idValue = $(this).find("id").text();
    });

Но я не смог найти правильную комбинацию для получения идентификатора (90), например. следующее не сработало:

$(XML).find("test").children().attr("id");

Это довольно неприятно для отладки jquery. Я установил Firefox addon, Firequery и сохранил DOM в файл с расширением html, но Firequery не позволил мне связать такие функции, как $ .find ("id"). Text (); , Как получить значение идентификатора 90 из DOM с помощью jquery? Что вы используете для отладки jquery при работе с файлами DOM и XML, как во фрагменте?

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

«id» не является атрибутом узла, это содержимое узла. Попробуйте найти testValue="0":

$idnode = $('test[testValue="0"]').find('id'); // a jQuery object
idvalue = $idnode.text(); // the string "90"
idnumber = parseInt(idvalue,10); // the number 90
0 голосов
/ 22 марта 2012

id это не атрибут, а элемент, поэтому вы можете выбрать его так же, как вы выбрали text.Чтобы получить 90, попросите .text() для элемента id.

$(XML).find('test').children('id').text();

См. http://jsfiddle.net/Mikey/FjnTS/

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