2016-10-03 45 views
0

帶班發送圃由於多個項目,每個數據-LOC = N

我有以下項目之間共同的價值觀:

var qty = 0; 
var loc = 0; 
var product = ''; 
$('.send-po').each(function(i,item){ 
    qty = $(this).attr('data-qty'); 
    loc = $(this).attr('data-loc'); 
    product = $(this).attr('data-product'); 
}); 

什麼是組的最佳方式當loc [0] = loc 1或loc 2等?

我需要一個PO發送到特定祿或供應商與來自一個共同的LOC航運(通貨膨脹)

謝謝所有物品!

基於mhodges建議,我也做了以下內容:

for(var o=0;o<100;o++){ 
    $('.send-po[data-loc='+o+']').each(function(i,item){ 
    console.log(item); 
    qty = $(this).attr('data-qty'); 
    loc = $(this).attr('data-loc'); 
    product = $(this).attr('data-product'); 
    }); 
} 

我想我可以用這個。謝謝mhodges!

另一個相關的問題:

var orders = '<table>'; 
$.each(cart,function(j,contents){ 
    if(contents[n].loc === contents[o].loc){ 
    //group the two 
    } else { 
    orders += '<tr><td>'+contents.qty+'<br/>Sending from '+contents.loc+'</td><td>'+contents.product+'<br>'+contents.options+'<br>'+comments+'</td><td>'+number_format(order.Price,2,'.',',')+'</td><td>'+number_format(order.subtotal,2,'.',',')+'</td></tr>'; 
    orders += '<tr><td><input class="carrier" id="carrier_'+contents.cartId+'" placeholder="Carrier"></td><td><input class="tracking" id="cartid_'+contents.cartId+'" data-item="'+contents.product+' '+contents.options+'" placeholder="Tracking # for this item"><button class="btn-small send" id="send-tracking_'+contents.cartId+'">Send</button></td><td><input type="hidden" class="send-po" data-loc="'+contents.loc+'" data-product="'+contents.product+' '+contents.options+'" data-qty="'+contents.qty+'"><textarea id="afs-comments-'+contents.loc+'" placeholder="Comments to Vendor"></textarea><br/><button id="sendPO-'+contents.loc+'">Send PO</button></td></tr>'; 
    orders += '<tr><td colspan="4"><hr></td></tr>'; 
    } 
}); 
orders += '</table>'; 
$('#orders').html(orders).show(); 

現在我有2臺輸出的每個內容[]見圖表what I have now

我需要的是有輸入和發送PO只有一次每個位置:only have the inputs once per location (contents.loc)

有什麼建議嗎?

+0

您可以使用數據屬性中選擇分組它ems由某個數據屬性。例如:'$(「。send-po [data-loc = 0]」)'會得到所有具有類「send-po」的項以及一個等於0的數據loc屬性 – mhodges

+0

有趣,I只是不知道data-loc的值 - 它可能有100個值可能 – phpmydev

+0

您可以做的一件事是獲取data-loc值的列表,然後對這些值進行迭代。在評論中解釋可能太多了,所以我會發表一個答案。 – mhodges

回答

0

正如我在評論中提及:

您可以通過一定的數據屬性使用在選擇組項目的數據屬性。例如:$(".send-po[data-loc=0]")將讓你所有的類項目的「送寶」,以及一個數據-LOC屬性等於0

如果您不知道哪些珍惜你所尋找的,或者您希望循環所有潛在的值,而不是猜測你有多少,並用一組靜態值創建一個for循環,你可以隨時檢索當前的值列表,然後迭代這些值。這有助於你在三個方面:

1)它消除任何不必要的循環迭代/操作

2)它使你的代碼的可擴展性和麪向未來的

3)它可以讓你的數據-LOC值爲任意值 - 字符串,非順序號等

下面的代碼可能看起來像:

// Get the current list of all data-loc values 
var locations = []; 
$(".send-po[data-loc]").each(function() { 
    var location = $(this).data("loc"); 
    // check to see if the value is already in the array 
    if (locations.indexOf(location) === -1) { 
     // if not, push it onto the array 
     locations.push(location); 
    } 
}); 
locations.each(function (index, location) { 
    // group the .send-po by data-loc value 
    $('.send-po[data-loc='+ location + ']').each(function(i,item){ 
     console.log(item); 
     qty = $(this).attr('data-qty'); 
     loc = $(this).attr('data-loc'); 
     product = $(this).attr('data-product'); 
    }); 
}); 
+0

可能不應該使用位置,因爲它是一個JavaScript關鍵字 – phpmydev

+0

@phpmydev位置從來沒有一個javascript關鍵字... https:// mathiasbynens。be/notes/reserved-keywords – mhodges

+0

好吧,來想一想吧,我是不是地方有問題的長度,我的壞! – phpmydev