2012-07-31 37 views
4

我有一个循环读取一个文件夹的内容,下面的代码:总申报单的内容是点击其相应的复选框,当

<div class="oddrow"> 
    <span class="title">1 - 1215 - Magna Carta</span><br/> 
    <span class="size">size: 229.1 MB</span> 
    <input name="1215 - Magna Carta" type="checkbox"> 
<div> 

当复选框被选中我想有每个记录的大小加在一个单独的div:

<div id="total>total = </div> 

我该怎么做?

+0

是否正确,您只想添加具有复选框的复选框? - 另外,你有没有JQuery? – 2012-07-31 16:12:30

+0

@jsalvy这个问题标记为jquery,so ... – MaxArt 2012-07-31 16:14:23

+0

@jsalvy - 是的,只有那些被检查的,也是我有jquery安装 – 2012-07-31 16:16:36

回答

4

正如巴蒂尔说,这将是更好地保存在属性平原号。如果这不是一个可能性,你仍然可以那样做:

$(':checkbox:checked').each(function(){ 
    sum += parseFloat($(this).prev().text().match(/[\d\.]+/)); 
}); 

演示:

http://jsfiddle.net/bGjP4/

这里是你如何把它们保存为复选框值:

$(':checkbox:checked').each(function(){ 
    sum += parseFloat($(this).val()); 
}); 
+0

+1非常优雅 – 2012-07-31 16:28:05

+0

我可以将它保存为属性好,是否更好地将它作为值=“”?我可以做 – 2012-07-31 16:32:17

+0

@crazysarah它真的取决于你。您可以将其作为“数据大小”属性保存在范围内,也可以将其作为值保存在复选框中。这在我看来会更清洁和简单。我更新了我的答案。 – Andy 2012-07-31 16:44:44

3

如果您可以调整HTML,我会建议将大小值放在大小跨度的数据属性或复选框中。这将使您的jQuery的总计算容易得多......

<input name="..." type="checkbox" data-size="229.1" class="checkTotal" /> 

那么你的jQuery会是这样:

$(function() { 

    var total = 0; 
    $(".checkTotal:checked").each(function(idx, elem) { 
     total = total + parseFloat($(elem).data('size')); 
    }); 
    $('#total').text('total = ' + total); 

}); 
+1

如果没有使用,我会使用'value'属性。 – 2012-07-31 16:23:24

+0

@FelixKling:猜我以jquery为中心我忘记了有时显而易见的......;) – ShaneBlake 2012-07-31 16:57:19

+0

@ShaneBlake有没有其他的东西可以使这个工作?我已将JavaScript放入页面头部的

相关问题