我有动态创建的行,我想在每行的末尾附加一个div。我尝试了不同的方法来实现这一目标。有一次我最后将div附加到每一行,但每次添加一行时,前面的行都会得到额外的div。我想只有一行一直有1个取消div。 (这就像取消按钮,因此用户可以删除该行。)
在这段代码中,我试图通过行类检查每一行并检查该行是否有一个具有“取消”类的子项,如果没有,则追加div取消。它是第一次工作,但不是其他时间。
$('.row').each(function(){
if($(".row").children(".cancel").length == 0){
$("<div class = 'cancel'>test</div>").appendTo('.row')
}
})
当我追加像这样的行
时,我试图在else语句中添加div“cancel” if($(".table").html().length <= 0)
{
$('.table').append($("<table>").append(tableheader).append(tr));
}else{
if($(".table").html().length > 0){
$("table").append(tr).append("<div class = 'cancel'>test</div>")
}
}
但它根本没有出现
我知道我可以在var tr中添加另一个td来创建一个带有div的新列,但我想知道为什么我按照上述方式做的努力是不成功的。它应该工作。原谅我的无知。
这里是jsfiddle的插图。也许其他地方的代码有问题。
我在代码中有另一个问题,我认为你可以帮助我。它与总列中的总量有关。格式是7.5而不是7.50,正常的美元定价数字。当我在烤鸡排上并选择qnty = 3时,总数为38.849999999999994我认为固定(2)和parseFloat会解决这个问题但是它们没有用。显然我想38.85。
答案 0 :(得分:1)
我认为问题在于你在附加div时访问表行的方式。
$('.row').each(function(){
if($(".row").children(".cancel").length == 0){
$("<div class = 'cancel'>test</div>").appendTo('.row')
}
});
上面的脚本总是在附加div时搜索类.row
。因此,如果你有一个div附加到任何一个.row
类,如果条件失败。
解决方案:
要解决此问题,请使用$(this)
访问循环中的每一行。
$('.row').each(function(){
if($(this).children(".cancel").length == 0){
$("<div class = 'cancel'>test</div>").appendTo($(this))
}
});
另外要修复第二期价格,请更改
$(".total",$row).html(parseFloat(qnty * price));
到
$(".total",$row).html(parseFloat(qnty * price).toFixed(2));
检查更新后的Demo Fiddle。
答案 1 :(得分:1)
试试这个:
$('.row').each(function(idx, val){
if($(val).children(".cancel").length == 0){
$("<div class = 'cancel'>test</div>").appendTo(val);
}
});
答案 2 :(得分:0)
你可以这样做 a)console.log($('。row')。length)//查看长度
$(“test”)。appendTo('。row')//这个代码应该是“ $(”test“)。appendTo($(this))”< / p>
我认为我上面所说的可能有帮助;试试你自己