JQuery嵌套$ .each循环不按顺序执行?

时间:2016-06-21 19:03:17

标签: jquery

基本上我想循环遍历具有“data-id”属性和匹配ItemID的所有输入,然后按顺序将它们插入到数据库中。不幸的是,它们没有按正确的顺序插入数据库。

这是我的HTML:

<input id="control01" data-ItemId="11" value="xxx">
<input id="control02" data-ItemId="11" value="xxx">
<input id="control03" data-ItemId="12" value="xxx">
<input id="control04" data-ItemId="12" value="xxx">
<input id="control05" data-ItemId="12" value="xxx">
<input id="control06" data-ItemId="13" value="xxx">
<input id="control07" data-ItemId="13" value="xxx">
<input id="control08" data-ItemId="13" value="xxx">
<input id="control09" data-ItemId="14" value="xxx">    
<input id="control10" data-ItemId="14" value="xxx">
<input id="control11" data-ItemId="14" value="xxx">

这是我的代码:

var ItemIDs = [12,13,14]; //Here's the given ID we're looking for
$.each(ItemIDs, function (index, value) {
        //alert(value); If I add an alert here it'll be inserted in the correct order
        $(":input[data-id='" + value + "']").each(function (index2, value2) {
        //Code to insert its value into SQL database;
        //PageMethods.AddItemToDB(ItemID);
       });   
    });

我希望数据库中的结果为:

自动识别的ItemID
1个12
2个12
3个12
4个13
5个13
6个13
7个14
8个14
9个14

但这是我得到的:

自动识别的ItemID
1个12
2个12
3个13
4个14
5个14
6个13
7个14
8个12
9个13

我不知道为什么订单如此随机。我尝试在每个循环中添加一个警报,令我惊讶的是实际上修复了问题,否则它只是随机顺序。我在这做错了什么?我非常感谢任何帮助或建议!

2 个答案:

答案 0 :(得分:1)

var IDArray = [];
$("input[data-ItemId]").each(function() {
     if ($.inArray($(this).data("ItemId"), ItemIDs)) {
         IDArray.push($(this).data("ItemId"));
     }
});

我不确定您希望如何将这些值添加到数据库中,但如果该数组中存在这些值,则此代码会将它们添加到数组中(ItemIDs

答案 1 :(得分:0)

由于@Barmar提到在javascript中调用WebMethod是异步的,我最终在表中添加了一个新列,仅用于排序目的,然后在其中插入一个新索引。它终于以我想要的方式工作了!谢谢你的帮助!!