0

動的に作成される行があり、各行の最後に div を追加したいと考えています。これを実現するために、さまざまな方法を試しました。一度、各行に div を追加することになりましたが、行が追加されるたびに前の行に追加の div が追加されました。常に1つのキャンセルdivを持つ行は1つだけです。(これはキャンセル ボタンのようなもので、ユーザーは行を削除できます)。

このコードでは、行のクラスを持つ各行を調べて、行に「キャンセル」のクラスを持つ子があるかどうかを確認し、ない場合は 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.50 ではなく 7.5 として出てきます。チキンカツのグリルで 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 を追加するときに常にクラスを検索します。.rowしたがって、条件が失敗した場合、クラスのいずれかに div が追加されている場合。

解決:

この問題を解決するには、 を使用$(this)してループ内の各行にアクセスします。

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

また、価格の 2 番目の問題を修正するには、次のように変更します

$(".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 に答える