Tôi gặp sự cố khi tìm ra lý do cho hành vi jquery/checkbox sau đây.jquery attr ('checked', 'checked') chỉ hoạt động một lần
$(this.obj + ' table.sgrid-content > thead > tr > th > input.select_all').on('click' , {grid:this} , function(event){
var grid = event.data.grid;
if($(this).is(':checked')){
$(grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ').attr('checked','checked');
$(grid.obj + ' .sgrid-content > tbody > tr > td > input.select ').parents('tr').addClass('ui-state-highlight');
} else {
$(grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ').removeAttr('checked');
$(grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ').parents('tr').removeClass('ui-state-highlight');
}
});
Mã này được thiết kế để làm việc như sau: - click vào input.select_all gây nên sự kiện - nếu input.select_all được kiểm tra: kiểm tra thêm thuộc tính cho tất cả các hộp kiểm được đánh dấu là .Chọn trong table.sgrid- content - nếu không: xóa thuộc tính 'checked' khỏi tất cả các mục input.select.
Tuy nhiên, một chức năng lưới đơn giản khác. Và nó hoạt động. Phần kỳ lạ là, nó chỉ hoạt động một lần. Theo ý tôi, bạn có thể chọn tất cả các hộp kiểm và bỏ chọn chúng. Sau khi hoạt động "Chọn tất cả" chức năng ngừng hoạt động.
Một điều kỳ lạ là, khi tôi kiểm tra các yếu tố dom với firebug tất cả họ trở thành kiểm tra = 'kiểm tra' attr như họ cần, nhưng họ hiển thị và hành xử như họ đã không được kiểm tra.
Bộ chọn hoạt động đúng cách. Phần mã có thêm/xóa ui-state-highlight hoạt động mọi lúc.
Lời explenation: lưới - là đối tượng mà tôi vượt qua để có được grid.obj (về cơ bản ID của một div ceratain)
Xin vui lòng cho tôi ý kiến của bạn.
sử dụng '.prop ('kiểm tra', true) và .prop ('kiểm tra', false) 'thay vì' .attr ('kiểm tra', 'kiểm tra') hoặc .removeAttr'. attr cho thao tác kiểm tra/trạng thái được chọn hiện không được chấp nhận trong jQuery – codefreak
cảm ơn, bây giờ khi bạn đề cập đến nó, vấn đề bắt đầu sau khi nâng cấp jquery lib. Cảm ơn rất nhiều, không biết điều đó! – PiWo