JQuery - получает все атрибуты элемента XML - PullRequest
0 голосов
/ 13 августа 2011

Я пытаюсь получить массив всех атрибутов элемента в ответе XML.

$(xData.responseXML).find("[nodeName=z:row]").each(function() {
  console.info($(this).attr("ows_Title"));
  ...

Это возвращает правильное значение для ows_Title, но я хочу выяснить все атрибуты, которые имеет строка z :. Как я могу сделать это и заставить его работать во всех браузерах? У меня есть метод, работающий для FF и Chrome, но он не работает в IE. Похоже, IE не распознает, что у элемента XML есть атрибуты, но он видит их, когда я специально ищу такой, как «ows_Title».

Что насчёт этого:

for(var key in this.attributes) {
  if(!isNaN(key)) {
    if(!prefix || this.attributes[key].name.substr(0,prefix.length) == prefix) {
      attributes.push(this.attributes[key].name);
    }
  }
}

ЭТО НИЧЕГО НЕ ДЕЛАЕТ В IE, даже если при создании console.info (this.attributes) он создает NamedNodeMap:

for(var key in this.attributes) {
  alert("test");
  ...

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Разобрался.Я закончил только итерацией.

if(jQuery) {
  jQuery.fn.listAttributes = function() {
    var attributes = new Array();
    $(this).each(function() {
      for (var i=0; i<this.attributes.length; i++)
      {
        attributes.push(this.attributes.item(i).nodeName);
      }
    });
    return attributes;
  }
}
0 голосов
/ 13 августа 2011

Попробуйте:

$(xData.responseXML).find("[nodeName=z:row]").each(function() {
    console.info(this.attributes);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...