>  기사  >  웹 프론트엔드  >  여러 데이터 테이블이 공존하면 여러 테이블의 확인란이 선택됩니다_jquery

여러 데이터 테이블이 공존하면 여러 테이블의 확인란이 선택됩니다_jquery

WBOY
WBOY원래의
2016-05-16 17:29:121248검색

[문제 원인]
jquery.datatable 컨트롤 자체의 결함이어야 합니다.
이 컨트롤의 체크박스 플러그인 ID는 하드코딩되어 있으므로 한 페이지에서 여러 데이터 테이블을 참조하면 모두 선택 이벤트가 모든 데이터 테이블과 일치하므로 여러 테이블의 체크박스가 모두 차단됩니다. 선택된.

[해결책]
따라서 jquery.datatable 컨트롤을 수정하고 생성된 각 데이터 테이블 아래의 확인란에 다른 ID를 부여하는 것이 가장 좋습니다. ID는 고유한 ID를 형성하기 위해 확인란의 접두어로 사용됩니다. 특히 이벤트를 호출하려면 이 확인란의 호출 이벤트도 동기화하고 이 새 ID로 바꿔야 합니다.
[파일 수정]
jqurey.datatable.ext.js (v0.0.1)

1. Init 메소드 수정:

복사 코드 코드는 다음과 같습니다.

$("#" options.select_table).find('thead tr th:first-child')
.prepend( '')
==>
$("#" options.select_table).find( 'thead tr th:first-child')
.prepend('')

2.subscribeAllChk 메소드 수정:
코드 복사 코드는 다음과 같습니다.

$("# chk_all").click(function(){
==>
$("#" $.fn.datatable_ext.defaults.select_table "_chk_all").click(function() {

3.subscribeChk 메소드 수정:
코드 복사 코드는 다음과 같습니다.

if(checked_chk_num == curr_page_chk_num){
$("#chk_all").attr('checked', 'checked')
}else{
$("# chk_all").removeAttr('checked' );
}
==>
if(checked_chk_num == curr_page_chk_num){
$("#" $.fn.datatable_ext.defaults.select_table "_chk_all").attr('checked', 'checked');
}else{
$("#" $.fn.datatable_ext.defaults.select_table "_chk_all").removeAttr('checked') ;
}
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.