给定send-po类的多个项目,每个项目都有data-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等时,对项目进行分组的最佳方法是什么?
我需要向特定的地方或供应商发送采购订单,其中所有物品都来自公共地点(ation)
谢谢!
根据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();
有什么建议吗?
答案 0 :(得分:0)
正如我的评论所述:
您可以使用选择器中的data属性按特定数据属性对项目进行分组。示例:
$(".send-po[data-loc=0]")
将为您提供“send-po”类以及等于0的data-loc属性的所有项目
如果您不知道要查找的是哪个值,或者您希望遍历所有潜在值,而不是猜测您拥有多少值并使用静态值集创建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');
});
});