2011-12-20 9 views
2

私の頭は今日考えていません。あなたのいずれかが助けてくれますか? =) 2番目の列のチェックint値のみが計算され、合計でアラートされる必要があります。jqueryチェックボックスの横にあるhtml値を計算します

<table width="100%"> 
    <tr><td>Product Name</td><td>Price $</td></tr> 
    <tr><td><input type="checkbox"> Product 1</td><td>200</td></tr> 
    <tr><td><input type="checkbox"> Product 2</td><td>300</td></tr> 
</table> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $('input').change(function() { 
    var sum = 0; 
    $("input:checked").each(function(){ 
     sum += parseInt($("input:checked").closest('td').next().html()); 
    }); 
    alert(sum); 
    }); 
</script> 

ありがとうございました。

答えて

4

の中に$(this)を使用して、ループ内で現在選択されているチェックボックスに最も近い<td>を見つけるように見えます。

// Bind to all checkboxes... 
    $('input[type="checkbox"]').change(function() { 
    var sum = 0; 
    $("input:checked").each(function(){ 
     // Use $(this) here 
     sum += parseInt($(this).closest('td').next().html(), 10); 
     // Always use the optional radix to parseInt() -----^^^^^ 
    }); 
    alert(sum); 
    }); 
+1

どうもありがとう!私はプログラミングの間に少ないワインを飲むべきです。 –

+0

@ラジオ時々私はもっと飲むべきだと思う... –

+0

ええ、私はそれ以上のものはないと思う。 –

3

これを試してみてください:

$('input:checkbox').change(function() { 
    var sum = 0; 
    $("input:checked").each(function() { 
     sum += parseInt($(this).closest('td').next().text(), 10); 
    }); 
    alert(sum); 
}); 

はあなただけではなく、それらの:checkedすべてのチェックボックスにchangeイベントをリッスンする必要があります。また、パラメータをparseIntに渡してください。最後に、thisは、each関数で評価されている項目を参照します。

例:http://jsfiddle.net/38AeT/

+0

うん、すでに考え出した。ありがとう。 –

関連する問題