我有4个xml块,我想解析jQuery做一个ajax调用。现在,四个xml块彼此不同(但结构相同)。我试图通过将id传递给每个xml块来解析这个xml,但是在我的ajax调用中,我无法检索id属性,因为这是我需要捕获的第一件事就是传递给ajax函数。
我试过这样的事情:
XML就在这里:
<dropdown>
<test id="1">
<optionheading>
<heads>Heading 1</heads>
<value>
<values images='images/1.gif'>Option1</values>
<values images='images/2.gif'>Option2</values>
<values images='images/3.gif'>Option3</values>
</value>
</optionheading>
.....................................
............................
</test>
<test id='2">
<optionheading>
<heads id="b">H..................
..................
............
</test>
</dropdown>
我需要获得test1,test2,et-al
的idAjax就在这里:
$("document").ready(function() {
$.ajax({
type: "GET",
url:"dropdown.xml",
dataType: "xml",
success :function(xml) {
var select = $("#mySelect");
//I am getting id here
var id=$(xml).find('test').attr('id');
$(xml).find('test'+id).each(function() {
$(this).find('optionheading').each(function() {
var opthead = $(this).fin......................
答案 0 :(得分:1)
如果我理解你,应该发生以下情况(输出粗体):
<test id="IDHERE">
应填充 <select ID="IDHERE">
<optionheading>
应根据<optgroup>
<heads>
标签
<optgroup>
元素<option>
都填充了 <values>
元素
下面的代码是按要求实现这个想法的jQuery方法。
注意:$('test', xml)
是$(xml).find('test')
的简写
注意2:由于ID必须是唯一的,select#yourID
等于#yourID
注3:此脚本不需要XML的<values>
标记。
success: function(xml){
//Loop through each `<test>`
$('test', xml).each(function(test_index){
var id = $(this).attr('id'); //Get the ID of the `<test>`
// Select <select> element with ID `ID` using the `select#ID` selector
var select = $('select#' + id);
$('optionheading', this).each(function() {
$('values', this).each(function(){
var $values = $(this);
$('<option>')
.val($values.attr('images'))
.text($values.text())
.appendTo(optgroup);
});
$('<optgroup>')
.attr('label', $('heads', this).text())
.appendTo(select);
});
});
}
执行后可能的HTML:
<select id='1'>
<optgroup label='Heading 1'>
<option value='images/1.gif'>Option1</option>
<option value='images/2.gif'>Option2</option>
<option value='images/3.gif'>Option3</option>
<optgroup>
....
</select>
<select id="2">
...