【发布时间】:2012-01-25 00:23:34
【问题描述】:
在尝试遍历 XML 并查找并返回父级的 .attr(value) 等于正在函数中传递。
我必须做的,但这里没有看到的是,我有大约 70 个复选框,这些复选框的 ID 等于这段 XML 的 OAData 的值
<OAData value='1'>
<OAid>OA1</OAid>
<BAC_Level_1>some text</BAC_Level_1>
<Basel_Level_1>some text</Basel_Level_1>
<Basel_Level_2>some text</Basel_Level_2>
<Risk_Category_Level_3>some text</Risk_Category_Level_3>
</OAData>
期望的结果:期望的结果是用户点击一个按钮来提交它运行函数 createrow() 并且当他们这样做时它将检查复选框是否被选中,如果是它只会遍历那些XML 中 OAData 值等于选中框的值的项目。
我认为问题出在哪里:
$(xml_list).find('OAData').each(function() {
我认为我无法将其替换为:
$(xml_list).find('OAData').each.attr('value')(function() {
如果 OAData value 属性等于函数传递的值,我只想找到 OAData。
我可能处于本末倒置的境地——我有点紧张。
有问题的代码部分:
<script type="text/javascript">
function buildrow(checkboxid) {
if(checkboxid === 'OA1'){ //This is the wrong way to go about this - need help here
function xml_parser(wrapper) {
//Construct and display preloader
$('<div id="preload_xml"></div>').html('<img src="images/ajax-loader.gif" alt="loading data" /><h3>Loading Data...</h3>').prependTo($('body'));
//Hide Content (this is sloppy but easy to customize..)
$(wrapper).hide();
//Get XML Data
$.ajax({
type: 'GET',
url: 'xml/OA.xml',
dataType: 'xml',
success: function(xml_list) {
//Remove preloader HTML & show data
$('#preload_xml').remove();
$(wrapper).show();
var xmlArr = [];
$(xml_list).find('OAData').each(function() {
var xml_OAval = $(this).attr('OAval');
var xml_OAid = $(this).find('OAid').text();
var xml_BAC_Level_1 = $(this).find('BAC_Level_1').text();
var xml_Basel_Level_1 = $(this).find('Basel_Level_1').text();
var xml_Basel_Level_2 = $(this).find('Basel_Level_2').text();
var xml_Risk_Category_Level_3 = $(this).find('Risk_Category_Level_3').text();
// Add matched items to an array
xmlArr += '<tr filterCriteria="';
xmlArr += xml_OAval;
xmlArr += '"><td>';
xmlArr += xml_OAid;
xmlArr += '</td><td>';
xmlArr += xml_BAC_Level_1;
xmlArr += '</td><td>';
xmlArr += xml_Basel_Level_1;
xmlArr += '</td><td>';
xmlArr += xml_Basel_Level_2;
xmlArr += '</td></tr>';
}); // end each loop
//Append array to table (this way is much faster than doing this individually for each item)
$(xmlArr).appendTo(wrapper +' table tbody');
} // end post AJAX call operaitons
}); // end AJAX
} // end function
//Function Call
var wrapper = '#xml_wrapper'; // Id of wrapper
xml_parser(wrapper);
}
}
</script>
</head>
<body>
<div id="xml_wrapper">
<h1 id="title">My Title</h1>
<h3 id="xml_dec_nav">Select a Category:</h3>
<div id="page-wrap">
<form name "frmCat" action="index2.html" method="get">
<select id="mySelect" onchange="onchange1(this.options[this.selectedIndex].value)">
<option>Select a Category</option>
</select>
</form>
<input class="epcf" type="button" onclick="toggleDiv('epcf-wrap')" value="Options"/>
<input type="button" onclick="buildrow('OA1')" value="Create" />
<br/>
</div>
<table>
<thead>
<tr>
<th class="header headerSortUp">OAid</th>
<th class="header">BAC Level 1</th>
<th class="header">Basel Level 1</th>
<th class="header">Basel Level 2</th>
<th class="header">Risk Category Level 3</th> </thead>
<tbody>
</tbody>
</table>
</div>
<div id="epcf-wrap">
</div>
</body>
</html>
【问题讨论】: