我有一个代码,为我的每个名为“CheckAll”的按钮添加一个check-all切换 我最近遇到一个问题,从IE浏览器,按钮不起作用,我发现addEventListener在IE中不起作用,你必须使用attachEvent,但有些人说这也可能有后果,他们是推荐jQuery。那么有人可以演示我的javaScript的jQuery版本吗? 这是代码
function script1(){
var el = document.getElementsByName('CheckAll');
el1 = el[0];
el2 = el[1];
el3 = el[2];
el4 = el[3];
el5 = el[4];
el6 = el[5];
el7 = el[6];
el1.addEventListener('click', function(){selectAll(0,8)}, false);
el2.addEventListener('click', function(){selectAll(8,16)}, false);
el3.addEventListener('click', function(){selectAll(16,26)}, false);
el4.addEventListener('click', function(){selectAll(26,34)}, false);
el5.addEventListener('click', function(){selectAll(34,44)}, false);
el6.addEventListener('click', function(){selectAll(44,52)}, false);
el7.addEventListener('click', function(){selectAll(52,60)}, false);
}
这是一个jfiddle fiddle
答案 0 :(得分:2)
在jQuery中,有一个简单的函数来绑定事件:.on
。您可以使用CSS表示法$
使用selectAll
函数选择元素:http://jsfiddle.net/VHXDx/11/。如果没有// run when elements are available
$(function() {
// select the `CheckAll` buttons and run a function for each one
$("input[name='CheckAll']").each(function(i) { // `i` is a counter
// bind event
$(this).on("click", function() {
// select `AG[]` elements in the current row and toggle their checked property
$(this).closest("tr").find("[name='AG[]']").prop("checked", function(j, current) {
return !current;
});
});
});
});
函数,这将是所有需要的:
{{1}}
答案 1 :(得分:1)
function script1(){
var el = $('[name="CheckAll"]');
el.on('click', function() {
$(this).closest('td').siblings().find('input[name="AG[]"]').each(function(i,e) {
e.checked = !e.checked;
});
});
}
答案 2 :(得分:0)
为什么不使用attachEvent
?您可以在不使用jQuery的情况下轻松构建simple crossbrowser addEvent
function。
var add = document.addEventListener ? function(el, type, fn) {
el.addEventListener(type, fn, false);
} : function(el, type, fn) {
el.attachEvent("on"+type, fn.bind(el), false);
};
function script1(){
var els = document.getElementsByName('CheckAll');
var a = 1, b = 0;
for (var i=0; i<els.length; i++) {
a *= -1;
add(els[i], 'click', selectAll.bind(null, b, b+= 9+a));
}
}