這裏因爲某種緣由,單元格tbody部分設置的是th,不過不影響,html
本博客改編自:https://www.cnblogs.com/sqh17/p/8718002.html 這邊博客寫的是thead中的th單元格拖拽前端
每一行設置一個id.這樣就不會拖到別的行去了ajax
看圖:後端
拖拽後:this
哈哈,搞了我一上午,前端終於搞好了,如今搞後端去了,有問題歡迎留言spa
$('tbody th').attr('draggable',true); // 將表格th聲明爲可拖拽 $('tbody th').on('dragstart',function(ev){ // 被拖數據的數據類型和值 ev.originalEvent.dataTransfer.setData("Text", ev.currentTarget.cellIndex); ev.originalEvent.dataTransfer.setData("tr_id", ev.currentTarget.parentNode.id); }) $('tbody th').on('dragover',function(ev){ // 阻止默認行爲 ev.preventDefault(); }) $('tbody th').on('drop',function(ev){ // 阻止默認行爲 ev.preventDefault(); // 獲取被拖的數據的索引 var id = ev.originalEvent.dataTransfer.getData("Text"); var tr_id = ev.originalEvent.dataTransfer.getData("tr_id"); // 當前要放下的索引 var Id = this.cellIndex; var tr_Id = this.parentNode.id; console.log(tr_id); console.log(tr_Id); if(tr_id !== tr_Id){//行不一樣,不能拖動 return; } if(Id===0 || id===0){//存放名字的也不能拖動 return; } // 存儲點擊的this var that = this; // 遍歷th $('#'+tr_Id+' th').each(function(){ // 獲取遍歷的每個th,這個this和點擊的this不同 var _this = this; // 當遍歷的每個th的索引和被拖拽的索引一致時,重構 if(_this.cellIndex == id){ if(id > Id){ //這裏放ajax操做 that.before(_this); }else{ //這裏放ajax操做 that.after(_this); } } }) })