0

我有动态创建的行,我想在每行的末尾附加一个 div。我尝试了不同的方法来实现这一点。有一次我最终将 div 附加到每一行,但每次添加一行时,前面的行都会获得额外的 div。我只希望一行始终有 1 个取消 div。(这就像一个取消按钮,因此用户可以删除该行)。

在这段代码中,我试图用行的类遍历每一行,并检查该行是否有一个具有“取消”类的子项,如果没有,则附加 div 取消。它第一次有效,但其他时候无效。

$('.row').each(function(){
 if($(".row").children(".cancel").length == 0){
    $("<div class = 'cancel'>test</div>").appendTo('.row')
}   
})

当我附加这样的行时,我尝试在 else 语句中添加 div“取消”

 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 我认为 toFixed(2) 和 parseFloat 会解决这个问题,但它们没有用。显然我想要 38.85。

4

3 回答 3

1

我认为问题在于您在附加 div 时访问表行的方式。

$('.row').each(function(){
    if($(".row").children(".cancel").length == 0){
        $("<div class = 'cancel'>test</div>").appendTo('.row')
    }   
});

.row上面的脚本总是在附加 div 时搜索类。因此,如果您有一个 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

于 2013-09-29T06:35:19.150 回答
1

尝试这个:

$('.row').each(function(idx, val){
    if($(val).children(".cancel").length == 0){
        $("<div class = 'cancel'>test</div>").appendTo(val);
    }   
});
于 2013-09-29T06:41:13.413 回答
0
  1. 你可以这样做 a)console.log($('.row').length)// 来查看长度

  2. $("test").appendTo('.row') //this.code 应该是 " $("test").appendTo($(this)) "

    我认为我上面所说的可能会有所帮助;试试你自己

于 2013-09-29T06:09:11.837 回答