所以當有多個datatable 引用到一個頁面中的時候
全選事件會匹配全部的datatable
所以造成全部多個表格的checkbox被都被選中
【問題原因】
這個應該是 jquerydatatable 控件本身的一個缺陷
該控件中的checkbox小插件的id是寫死的所以當有多個datatable引用到一個頁面中的時候全選事件會匹配全部的datatable所以造成全部多個表格的checkbox被都被選中
【解決方法】
所 以最好是修改jquerydatatable控件給生成的每個datatable下的checkbox賦 予不同的id因為datatable的id是不一樣的所以可以把 datatable的id作為 checkbox的前綴組成一個唯一的id 具體這個checkbox的調用事件也需要同步 替換成這個新id進行事件的調用
[修改文件]
jqureydatatableextjs (v)
init方法修改
復制代碼 代碼如下:
$("#"+options
select_table)
find(
thead tr th:first
child
)
prepend(
<input type="checkbox" value="CHK_ALL" id=“chk_all" />
);
==>
$("#"+options
select_table)
find(
thead tr th:first
child
)
prepend(
<input type="checkbox" value="CHK_ALL" id="
+options
select_table+
_chk_all" />
);
subscribeAllChk方法修改
復制代碼 代碼如下:
$("#chk_all")
click(function(){
==>
$("#"+$
fn
datatable_ext
defaults
select_table+"_chk_all")
click(function(){
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){
$("#"+$fndatatable_extdefaultsselect_table+"_chk_all")attr(checked checked);
}else{
$("#"+$fndatatable_extdefaultsselect_table+"_chk_all")removeAttr(checked);
}
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20141.html