HTML解析Div数据会产生错误的结果

时间:2014-06-25 22:34:00

标签: jquery

使用Jquery每个函数,我正在解析一个名为myordersdiv

的div数据

这是我的完整程序,如下所示

<script type="text/javascript">
var name;
var products = [];
$(document).ready(function() {
    $.each($('#myordersdiv ul'), function(i, elem) {
        name = $(elem).find("label").text();
        if (name != 'undefined') {
            //Creating product array 
            products.push({
                'name': name
            });
        }
    });
    var orderjson = JSON.stringify(products);
    console.log(orderjson);

});

 </script>
</head>
<body>
   <div id="myordersdiv" style="display: block;">
      <ul>
         <div id="ordersdiv" style="">
            <div id="addtoordersdiv71">
               <div class="prd-items-detials">
                  <ul>
                     <li class="head">
                        <form>
                           <input type="checkbox" name="checkbox-mini-0" id="71">
                           <label class="testtt" for="checkbox-mini-0">Regular, 50 Ml</label>
                        </form>
                     </li>
                  </ul>
               </div>
            </div>
         </div>
      </ul>
   </div>
</body>

</html>

当我运行上述程序时,输出

[{"name":"Regular, 50 Ml"},{"name":"Regular, 50 Ml"}] 

显示数组下的两个元素。

但我只有一个常规元素,在myordersdiv下只有50毫升

有人可以告诉我为什么我会得到两个元素?

这是我的小提琴

http://jsfiddle.net/GStDU/

1 个答案:

答案 0 :(得分:3)

ul内有两个#myordersdiv,因此each会迭代两次。在外ul和内ul上方。

你可能想要的是选择器$("#myordersdiv > ul")。这只会点击ul,它们是#myordersdiv的直接子项。