使用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; });
这里a
是aFunc
本地,并且只是数百万不在全球范围内的例子中的一个。
不想全球化吗?
(function() { var a = 0; $('.force').each(function (){ a += parseInt($(this).text()); }); $('#total_forces').text(a); })();
您可以使用$(“。force”)。length,它返回jQuery对象中的元素数。
jQuery API