在xml文档中,我想用jQuery检索元素“product”的“name”属性的不同属性值,删除重复项。
但是,我没有使用unique()函数或创建数组取得任何成功,如本讨论中所述: How to use jQuery to select XML nodes with unique text content?
任何帮助都将受到热烈欢迎。 非常感谢你。
我的XML:
<products>
<product name="first"></product>
<product name="second"></product>
<product name="first"></product>
<product name="first"></product>
</products>
我没有工作的代码:
function getName() {
$.ajax({
type: "GET",
url: xmlFile.xml,
dataType: "xml",
success: function(xml) {
$(xml).find('product').each(function(){
var name = $(this).attr('name');
var productArray = new Array();
if( jQuery.inArray(name, productArray) == -1 ){
$('<p></p>').html(name).appendTo('body');
productArray.push(name);
}
});
}
});
}
答案 0 :(得分:5)
productArray是针对product元素的每次迭代定义的gettin,因此inArray总是返回-1。
将productArray的定义移到每个循环之外,即:
function getName() {
$.ajax({
type: "GET",
url: xmlFile.xml,
dataType: "xml",
success: function(xml) {
var productArray = new Array();
$(xml).find('product').each(function(){
var name = $(this).attr('name');
if( jQuery.inArray(name, productArray) == -1 ){
$('<p></p>').html(name).appendTo('body');
productArray.push(name);
}
});
}
});
}
答案 1 :(得分:1)
我想到的第一个想法......您是否尝试过设置var“productArray”全局?我的意思是,在你的“每个”功能体外?我怀疑每次代码到达该点时都会重置productArray,因此它永远不会包含重复的条目。