【问题标题】:JQuery / XML Finding and returning 1 rowJQuery / XML 查找并返回 1 行
【发布时间】: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>

【问题讨论】:

    标签: xml jquery


    【解决方案1】:

    我不清楚你的问题,但也许问题可以解决

    $(this).find('OAval').text();
    

    而不是

    $(this).attr('OAval');
    

    【讨论】:

    • 类似的东西,但在最初的发现 - 我已经更新了代码以澄清
    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2018-05-30
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多