为什么我的jquery代码在使用ID但使用Class时不起作用
Why my jquery code wont work if with ID but Class
我有这样的html代码。
<input onkeyup="ave()" type="text" name="1" class = "ave" style="width: 60px"></td>
<input onkeyup="ave()" type="text" name="2" class = "ave" style="width: 60px"></td>
<input onkeyup="ave()" type="text" name="3" class = "ave" style="width: 60px"></td>
像这个的jQuery
function ave(){
$('.ave').keyup(function(){
var sum = 0;
var ave = 0;
$('.ave').each(function(){
sum += +$(this).val();
});
var ave = sum/3;
$('.total').val(ave.toFixed(2));
});
}
如果我将"class"更改为"ID",将$('.ave')
更改为$('#ave')
,代码将不起作用!
Id在HTML文档中是唯一的,Id在文档中只能使用一次,但类在同一文档中可以使用多次。ID通常标识文档中的唯一项,其中as类有助于将通用样式应用于页面中的多个项。因此,对于您的问题,不能使用Id.
ID应始终是唯一的 。
使用类是这个问题的解决方案
请看一下下面的代码。你可以参考这个代码,并可以检查我们是如何计算平均的
function ave(){
var sum = 0;
var ave = 0;
$('.myTextboxContainer input').each(function(){
if(!isNaN($(this).val()))
sum += +$(this).val();
});
ave = sum/$('.myTextboxContainer input').length;
$('.total').val(ave.toFixed(2));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<table class="myTextboxContainer">
<tr>
<td><input onkeyup="ave()" type="text" name="1" id = "ave1" style="width: 60px"></td>
<td><input onkeyup="ave()" type="text" name="2" id = "ave2" style="width: 60px"></td>
<td><input onkeyup="ave()" type="text" name="3" id = "ave3" style="width: 60px"></td>
</tr>
</table>
<div>
Average is : <input type="text" class="total"></span>
</div>
在代码中,您要绑定同一个元素两次。onkeyup="ave()"
和函数$('.ave').keyup(function()
中的javascript首先调用函数ave(),但还有一个时间绑定keyup对象。。
-
因此,第一个keyup转到函数ave(),并将.ave与keyup事件绑定。
-
在第二个keyup上调用sameave(),然后从执行jquery keyup绑定第一个keyup然后执行.each(function()<</strong>两次,然后再次执行元素绑定
-
第三个和其他的keyup会使复杂的绑定4次执行keyup等等
最佳实践
<input onkeyup="ave()" type="text" name="1" class = "ave" style="width: 60px"></td>
<input onkeyup="ave()" type="text" name="2" class = "ave" style="width: 60px"></td>
<input onkeyup="ave()" type="text" name="3" class = "ave" style="width: 60px"></td>
Javascript
function ave(){
var sum = 0;
var ave = 0;
$('.ave').each(function(){
sum += +$(this).val();
});
var ave = sum/3;
$('.total').val(ave.toFixed(2));
}
五个演示
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- Javascript add class 不起作用
- ng-class 在 angularJs 中由 ng-include 包含的文件内不起作用
- $(this).attr({class:“activeTab”});不起作用,因为这是未定义的
- 为什么我的jquery代码在使用ID但使用Class时不起作用
- Angular js ng-class 不起作用
- ng-class $event.stopPropagation() 在 Angular 中对父级不起作用
- $(.class).click(function(){}) 不起作用
- $(“.class”).width($(this)..) 不起作用
- JavaScript 和类 class=input-range 在 IE 中不起作用
- Netbeans 7.3.1在我的Javascript Class上自动完成代码;不起作用
- Angular js的ng-class错误条件在ng-repeat中不起作用
- 当使用 ng-class 更改类时,ng-show 动画不起作用
- Angular的ng-class不起作用,但普通的类属性可以工作
- 在'class'在同一个类中引用函数不起作用
- Angularjs:简单的例子——ng-class或ng-controller不起作用
- 当元素在class属性中有插值运算符时,addClass不起作用
- 斜体字体对元素的class属性不起作用
- Angular Js:onchange在class属性处的指令不起作用
- jQuery Add Class没有'不起作用