datatable.js之tab切換(新增,刪除)
datatables中tab
切換,思路1:通過ajax
獲取所有的資料,在將不同資料分配到不同表格
其中tab切換採用的是bootstrap
中的方法具體用法請參考官方文件,本文重點是ajax
請求之新增刪除
其他細節請忽略
1.必要的js,css檔案
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css">
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
2.HTML結構
<div style="width: 800px;margin: 0 auto">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#personInfo" role="tab" data-toggle="tab">個人資訊</a></li>
<li role="presentation"><a href="#shopInfo" role="tab" data-toggle="tab">店鋪資訊</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="personInfo">
<table id="example1" class="table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
<th>姓名</th>
<th>性別</th>
<th>郵件</th>
<th>年齡</th>
<th></th>
</tr>
</thead>
<tfoot>
<tr>
<td>
<div class="input-group">
<span class="input-group-addon" >姓名</span>
<input type="text" class="form-control" id='pname'>
</div>
</td>
<td>
<div class="input-group">
<span class="input-group-addon" >性別</span>
<input type="text" class="form-control" id='psex' placeholder="(0)女,(1)男">
</div>
</td>
<td>
<div class="input-group">
<span class="input-group-addon" >郵件</span>
<input type="text" class="form-control" id='pemail'>
</div>
</td>
<td>
<div class="input-group">
<span class="input-group-addon" >年齡</span>
<input type="text" class="form-control" id='page'>
</div>
</td>
<td>
<button class="btn btn-success" id='padd'>新增</button>
</td>
</tr>
</tfoot>
</table>
</div>
<div role="tabpanel" class="tab-pane" id="shopInfo">
<table id="example2" class="table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
<th>店鋪名稱</th>
<th>店鋪地址</th>
<th>店鋪號碼</th>
<th>店鋪簡介</th>
<th></th>
</tr>
</thead>
<tfoot>
<tr>
<td>
<div class="input-group">
<span class="input-group-addon" >店鋪名稱</span>
<input type="text" class="form-control" id='sname'>
</div>
</td>
<td>
<div class="input-group">
<span class="input-group-addon" >店鋪地址</span>
<input type="text" class="form-control" id='saddress'>
</div>
</td>
<td>
<div class="input-group">
<span class="input-group-addon" >店鋪號碼</span>
<input type="text" class="form-control" id='snum'>
</div>
</td>
<td>
<div class="input-group">
<span class="input-group-addon" >店鋪簡介</span>
<input type="text" class="form-control" id='sinfo'>
</div>
</td>
<td>
<button class="btn btn-success" id='sadd'>新增</button>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
3.json檔案
{
"employees": [
{"name":"名字1","sex":"0","email":"123@163.com","age":"20"},
{"name":"名字2","sex":"1","email":"163@163.com","age":"50"},
{"name":"名字3","sex":"0","email":"132@163.com","age":"12"},
{"name":"名字4","sex":"0","email":"222@163.com","age":"55"}
],
"shops":[
{"sname":"小陳店鋪","saddress":"地址1","snumber":"888888","sinfo":"簡介啊啊"},
{"sname":"小賣部","saddress":"地址2","snumber":"666666","sinfo":"簡介啊啊"},
{"sname":"雜貨鋪","saddress":"地址3","snumber":"22222","sinfo":"簡介啊啊"}
]
}
4.js結構
$(function(){
let perdata, shopdata
let perArr=[];let shopArr=[]
$.ajax({
"url":'data.json',
"type":'get',
"dataType":'json',
"success":function(data){
perdata=data.employees
shopdata=data.shops
showPer(perdata)
showShop(shopdata)
}
})//先ajax獲取所有的資料
function showPer(data){
$.each(data,function(index,item){
perArr.push([item.name,item.sex,item.email,item.age])//item為陣列中的每一項
})
let options={
"paging":false,//不分頁
"searching":false,//不搜尋
"info":false,//不顯示資訊
"ordering":false,//不排序
"lengthChange":false,//不顯示分頁下拉選單
'destory':true,
"retrieve":true,
"data":perArr,
"columnDefs":[{"targets":[1],render:function(data,type,full){
return parseInt(data)===0?'女':'男'
}},{"targets":[4],render:function(data,type,full){
return "<button class='btn btn-danger del' >刪除</button>"
}}]
}
let table1=$("#example1").DataTable(options)
return table1
}
function showShop(data)
{
$.each(data,function(index,item){
shopArr.push([item.sname,item.saddress,item.snumber,item.sinfo])//item為陣列中的每一項
})
let options={
"paging":false,//不分頁
"searching":false,//不搜尋
"info":false,//不顯示資訊
"ordering":false,//不排序
"lengthChange":false,//不顯示分頁下拉選單
'destory':true,
"retrieve":true,
"data":shopArr,
"columnDefs":[{"targets":[4],render:function(data,type,full){
return "<button class='btn btn-danger del'>刪除</button>"
}}]
}
let table2=$("#example2").DataTable(options)
return table2
}
//動態新增員工資訊
$("#padd").click(function(){
let pname=$("#pname").val();
let psex=$("#psex").val();
let pemail=$("#pemail").val();
let page=$("#page").val()
showPer(perdata).row.add([pname,psex,pemail,page]).draw()
})
//動態新增店鋪資訊
$("#sadd").click(function(){
let sname=$("#sname").val();
let saddress=$("#saddress").val();
let snum=$("#snum").val();
let sinfo=$("#sinfo").val()
showShop(shopdata).row.add([sname,saddress,snum,sinfo]).draw()
})
//刪除資訊
$("#example1").on("click",".del",function(){
showPer(perdata).row($(this).parents('tr')).remove().draw()//找到當前點選按鈕的那一行tr刪除
})
$("#example2").on("click",".del",function(){
showShop(shopdata).row($(this).parents('tr')).remove().draw()//找到當前點選按鈕的那一行tr刪除
})
})
遇到的問題:
解決方法:在引數設定中加入
destory:true,
retrieve:true
2.若點選方法寫成如下則無效果
$(".del").click(function(){
showPer(perdata).row($(this).parents('tr')).remove().draw()
showShop(shopdata).row($(this).parents('tr')).remove().draw()
})
可能原因:點選按鈕是通過datatables
方法動態生成,瀏覽器自上而下解析程式碼,可能找不到類名為del
的按鈕
解決辦法:給父元素加點選事件,通過事件冒泡,子元素的點選事件觸發父元素的點選事件
結構:
$(父元素).on('click',function(){})
$(父元素).on('click',ele,function(){})//只有子元素為ele的點選事件才能觸發父元素的點選事件
效果:
相關文章
- 切換功能增加刪除
- tab-switch 樣式的新增 與 tab元素樣式的切換
- 前端小demo——tab切換前端
- Tab鍵切換選擇物件物件
- 用CSS實現tab切換CSS
- Linux下使用者的管理(使用者新增,刪除,查詢,切換等)Linux
- 使用Bootstrap tab頁切換的使用boot
- 用純css實現Tab切換CSS
- 常見的SQL語句(建立、刪除、切換)SQL
- 純CSS實現Tab欄的切換CSS
- 用CSS實現Tab頁切換效果CSS
- 微信小程式-uniapp-切換tab時資料列表如何切換?微信小程式APP
- 如何在自定義 Tool Bar 和 Tab Bar 之間切換顯示
- 使用JavaScript設定Tab欄自動切換JavaScript
- javascript實現tab切換的四種方法JavaScript
- Python 在PDF中新增、替換、或刪除圖片Python
- 新增、刪除PPA源
- [20190130]刪除tab$記錄的恢復.txt
- CSS3 tab選項卡動態切換CSSS3
- Flutter仿頭條頂部tab切換實現Flutter
- 純CSS的導航欄Tab切換例項CSS
- html兩種方法來實現tab切換效果HTML
- 【Android】 banner+tab吸頂+viewpager切換+重新整理載入之實現AndroidViewpager
- jQuery 新增和刪除classjQuery
- 紅黑樹新增刪除
- flutter實戰6:TAB頁面切換免重繪Flutter
- [20190225]刪除tab$記錄的恢復5.txt
- [20190130]刪除tab$記錄的恢復2.txt
- [20190212]刪除tab$記錄的恢復3.txt
- 陣列的方法-新增刪除陣列
- class屬性的新增刪除
- 新增cookie、刪除cookie、清除cookieCookie
- 從原始碼分析DEARGUI之互動新增和刪除元件原始碼GUI元件
- vue 實現tab切換動態載入不同的元件Vue元件
- Blazor如何實現類似於微信的Tab切換?Blazor
- HarmonyOS NEXT應用開發之Tab元件實現增刪Tab標籤元件
- win10系統按alt+tab無法切換到桌面_windows10系統alt+tab不能快速切換桌面如何解決Win10Windows
- ***python看圖軟體***(+-切換資料夾,d刪除所在資料夾)Python