我正在开展一个项目,我不知道接下来该做什么。我的目标是使用xml文件填充下拉菜单。菜单基于4个步骤。 “Fylke”“Kommune”“Kategori”“Dato”。现在我得到xml将数据提供给“Fylke”,示例如下。当用户从“Fylke”菜单中选择Akershus时,下一步是用Halden填充“Kommune”。
这是XML:
<arrangement>
<fylke name="Akershus">
<kommune name="Halden">
<arrangement id="570215856">
<kategori>Moro</kategori>
<dato>2013-10-10</dato>
</arrangement>
这是脚本:(此时正在向菜单输入“fylke”。)
$(document).ready( function() {
arrangementer();
fetch();
});
/*function fetch() {
setTimeout( function() {
arrangementer();
fetch();
}, 100);
}*/
function arrangementer() {
$.ajax({
url: "arrangementer.xml",
dataType: "xml",
success: function(data) {
$('ul').children().remove();
$(data).find("arrangement fylke").each( function() {
var info = '<a href="#">'+$(this).attr("name")+'</a>';
$('ul').append(info);
});
},
error: function() { $('ul').children().remove();
$('ul').append("<li>There was an error!</li>"); }
});
}
答案 0 :(得分:0)
如果需要,您需要将click事件附加到外部ul,这可以在ready函数
中完成$( "ul li" ).click(function() {
alert( "Handler for .click() called." );
});
您目前没有将li项目添加到您的ul jQuery: how to add <li> in an existing <ul>?
您确实需要为要更新的元素提供ID,以便您可以使用
$(" #myid li ").append(info);
上的所有ul元素添加信息
答案 1 :(得分:0)
不确定我的问题是否正确,但希望这会有所帮助:
$(xml).find("arrangement fylke").each( function(i) {
var info = '<a href="#" nodeno="'+i+'" >'+$(this).attr("name")+'</a>'; //attribute nodeno added, carries the number of the node you will need later
$('ul').append(info);
});
$('ul').on("click", function(e){ //when clicked on one of those elements
var nodeno = $(e.target).attr("nodeno"); //get nodeno attribute from clicked object
$(xml)[nodeno].find("arrangement kommune").each( function(i){ //get the node by id and...
var info = '<a href="#" nodeno="'+i+'" >'+$(this).attr("name")+'</a>';
$('#menuitem2').append(info); //...populate your submenu with the kommune object
} );
});
编辑:一点解释
这将导致fylke链接,如:
<a href="#" nodeno="0">Fylke 1</a>
<a href="#" nodeno="1">Fylke 2</a>
当单击其中一个时,您只需从单击的元素中读取nodeno属性,然后使用该属性从xml中获取相应的节点。那么你只使用那个节点的kommune来填充下一个菜单级别。
希望我的问题得到解决,这有助于