JQuery - 获取XML元素的所有属性

时间:2011-08-12 22:07:13

标签: jquery xml sharepoint-2010

我正在尝试获取XML响应中元素的所有属性的数组。

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

这将返回ows_Title的正确值,但我想找出z:row具有的所有属性。我怎么能这样做,并让它在所有浏览器中工作?我有一个适用于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);
    }
  }
}

当我执行console.info(this.attributes)时,即使它出现了NamedNodeMap,也不会在IE中执行任何操作:

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

2 个答案:

答案 0 :(得分:1)

想出来。我最后只是迭代了。

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;
  }
}

答案 1 :(得分:0)

尝试:

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