在动态创建的行的末尾追加div

时间:2013-09-29 05:51:08

标签: javascript jquery html css

我有动态创建的行,我想在每行的末尾附加一个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。

3 个答案:

答案 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)

  1. 你可以这样做    a)console.log($('。row')。length)//查看长度

  2. $(“test”)。appendTo('。row')//这个代码应该是“ $(”test“)。appendTo($(this))”< / p>

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