我有一个输入列表,这些输入在文档就绪时加载了一些,而其他的则是动态加载的。我需要总结所有这些,因为我需要检查它们的总和不超过99。
问题在于.live()我无法使用它,但它适用于.change()。
/* this works */
$(".percentage").each(function() {
$(this).change(function() {
var sum = 0;
$(".percentage").each(function() {
sum += $(this).val();
});
alert(sum);
});
});
/* this don't */
$(".percentage").each(function() {
$(this).live("change keyup focus click keydown", function() {
var sum = 0;
$(".percentage").each(function() {
sum += $(this).val();
});
alert(sum);
});
});
提前谢谢!
答案 0 :(得分:3)
您似乎误解了live
的工作原理。 live()
将处理程序附加到DOM中与给定选择器匹配的所有当前和未来元素。你正在做的是,对于当前在DOM中具有“百分比”类的每个元素,你将事件绑定到所有当前具有“百分比”类的未来元素,因此每个元素以许多事件绑定结束它。
尝试:
$('.percentage').live('change keyup focus click keydown', function() {
var sum = 0;
$(".percentage").each(function() {
sum += $(this).val();
});
alert(sum);
});
此外,val()
将返回一个字符串,因此您必须执行以下操作:
$(".percentage").each(function() {
sum += parseInt($(this).val(), 10);
});