Привет друг! Есть две таблицы, прайс и корзина, нужно наладить добавление в корзину. Помоги)) Проблема в том в цикле перебора строк корзины идет сравнение если новая строка = текущей то - обновить, иначе - добавить, но ведь может быть так что 1 строка не ровна новой - тогда - добавить а вторая равна и тут - обновить, а ведь так не должно быть. То есть мне надо чтобы если в корзине нет совпадений - добавить, есть - обновить. [js]$.each( $("#zakaz tbody").find("tr"), function(){ if($(this).attr("name") == data.id){ id =parseInt($(this).children().html()); oTable2.fnUpdate( [id, data.name, data.cost, data.selected, 'update'], (id-1), 0); $(this).attr("name",data.id); return false; } else{ oTable2.fnAddData([(add_id+1), data.name, data.cost, data.selected, 'new']); $(this).attr("name",data.id); return false; } });[/js] Решение у меня есть но в JS такова оператора нет( [js]$.each( $("#zakaz tbody").find("tr"), function(){ if($(this).attr("name") == data.id){ id =parseInt($(this).children().html()); oTable2.fnUpdate( [id, data.name, data.cost, data.selected, 'update'], (id-1), 0); $(this).attr("name",data.id); goto метка1; } }); oTable2.fnAddData([(add_id+1), data.name, data.cost, data.selected, 'new']); $(this).attr("name",data.id); метка1;[/js] подскажи как это все обернуть
Можно так сделать : просто подсчитываем количество одинаковых `name`. Если совпадение одно, то добавляем, если больше, то обновляем. Код (Text): var o = {}; $.each( $("#zakaz tbody").find("tr"), function(){ if( $(this).attr('name') in o ) { o[ $(this).attr('name')]++; return true; } o[ $(this).attr('name')] = 1; }); $.each( $("#zakaz tbody").find("tr"), function(){ var is_new = (o[$(this).attr('name')] == 1) ? true : false; if(is_new) { //add } else { //update } });
сделал так: если обновилось то upd=1, а вставка при условии что upd!=1 [js]$.each( $("#zakaz tbody").find("tr"), function(){ if($(this).attr("name") == data.id){ id =parseInt($(this).children().html()); oTable2.fnUpdate( [id, data.name, data.cost, data.selected, 'update'], (id-1), 0); $(this).attr("name",data.id); upd = 1; return false; } }); if (upd != 1){ oTable2.fnAddData([(add_id+1), data.name, data.cost, data.selected, 'new']); $("#zakaz tbody tr:last-child").attr("name",data.id); } upd=0;[/js]
А так у вас 1 id )) Я то думал куча будет. Есть вариант по короче Код (Text): var size = $('#zakaz tr[name=' + data.id + ']').length; if( size > 1) { // update } Ну и на 0 проверить )