我使用 YQL 通过 JSONP 获取数据,它返回一个 XML 字符串。我使用 $.parseXML
解析它并将其放入 jQuery 选择器中并尝试选择一个节点。但是,它包含一个命名空间(例如,yweather:
),并且 jQuery 似乎无法正常工作。
来自other SO answers他们建议这样做 \\:
可以解决这个问题。确实如此,但仅当我收到的数据是 XML 时(我的是 JSONP。)
$.ajax({
url: "http://query.yahooapis.com/v1/public/yql",
data: {
q: "select item from weather.forecast where location=48907",
format: "jsonp"
},
dataType: "jsonp"
}).success(function(data){
var xml = $.parseXML(data.results[0]);
console.log($("yweather\\:condition", xml));
});
它与任何内容都不匹配。
最佳答案
无法弄清楚为什么它不起作用,其他答案也建议使用 \\
转义 :
。但它不起作用。所以我尝试过这种方式并且有效。这也相当于 jQuery 的 find
方法,并且它正在工作 demo
代码是
var xml = $.parseXML(data.results[0]);
xml = $(xml).find('channel item');
var weatherList = xml.find('*').filter(function(){
return this.tagName === "yweather:condition";
});
console.log(weatherList);
希望这有帮助。
关于javascript - 在 jQuery 中选择具有命名空间的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184599/