0

我有一个代码,它为我的每个名为“CheckAll”的按钮添加了全选切换我最近遇到了一个问题,即 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

4

3 回答 3

2

在 jQuery 中,有一个简单的函数来绑定事件:.on. $您可以使用使用 CSS 表示法的函数选择元素:http: //jsfiddle.net/VHXDx/11/。这将是所有需要的,没有selectAll功能:

// 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;
            });
        });
    });
}​);​
于 2012-08-22T20:37:53.740 回答
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;
        });
    });
}

小提琴

于 2012-08-22T20:39:58.820 回答
0

为什么不使用attachEvent?您可以轻松构建一个简单的跨浏览器addEvent功能,而无需使用 jQuery。

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));
    }
}
于 2012-08-22T20:50:54.403 回答