使用jQuery求和每个没有全局变量的函数

我想添加一些具有相同类名的HTML元素。

所以,代码将与jQuery一样。

$(".force").each(function (){ a += parseInt( $(this).html()); }); $("#total_forces").html(a); 

在此代码中,变量必须是全局变量。

有没有其他优雅的方法来总结每个.force值并从each函数中得到总和而没有全局变量?

如果您不想引入全局变量,可以使用以下内容:

 $("#total_forces").html(function() { var a = 0; $(".force").each(function() { a += parseInt($(this).html()); }); return a; }); 

为方便起见,如果您经常需要相同的function,我可能只是制作一个插件。

示例: http //jsfiddle.net/patrick_dw/2bX3U/1/

 (function( $ ) { $.fn.sumHTML = function() { var sum = 0; this.each(function() { var num = parseInt( $(this).html(), 10 ); sum += (num || 0); }); return sum; }; })( jQuery ); 

……会像这样使用:

 $('#total_forces').html( $('.force').sumHTML() ); 

编辑:改变为@ŠimeVidas指出的再次警告 NaN 。 还确保了parseInt()中的base-10并修复了丢失的关闭}

总之,没有。

为什么必须是全球性的? 它不一定是全球性的。

 function aFunc() { var a = 0; $(".force").each(function (){ a += parseInt( $(this).html()); }); return a; } $("#total_forces").html(aFunc()); 

其中,可以简化为:

 $("#total_forces").html(function() { var a = 0; $(".force").each(function (){ a += parseInt( $(this).html()); }); return a; }); 

这里aaFunc本地,并且只是数百万不在全球范围内的例子中的一个。

不想全球化吗?

 (function() { var a = 0; $('.force').each(function (){ a += parseInt($(this).text()); }); $('#total_forces').text(a); })(); 

您可以使用$(“。force”)。length,它返回jQuery对象中的元素数。

jQuery API