From cab1f66b565f6fb6f805bf24901cca3ca6941527 Mon Sep 17 00:00:00 2001 From: jonyshi Date: Thu, 6 Jun 2019 16:13:07 +0800 Subject: [PATCH] =?UTF-8?q?=20=E8=A7=A3=E5=86=B3=E6=96=87=E5=AD=97?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=8B=96=E6=8B=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/TableHeader.js | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/src/TableHeader.js b/src/TableHeader.js index 233a0c1..c8fc4de 100644 --- a/src/TableHeader.js +++ b/src/TableHeader.js @@ -203,11 +203,13 @@ class TableHeader extends Component { this.drag.minWidth = currentObj.style.minWidth != ""?parseInt(currentObj.style.minWidth):defaultWidth; this.drag.tableWidth = parseInt(this.table.table.style.width ?this.table.table.style.width:this.table.table.scrollWidth); }else if(type != 'online' && this.props.draggable){ - if (!this.props.draggable || targetEvent.nodeName.toUpperCase() != "TH") return; - targetEvent.setAttribute('draggable',true);//添加交换列效果 + // if (!this.props.draggable || targetEvent.nodeName.toUpperCase() != "TH") return; + if (!this.props.draggable) return; + let th = this.getTargetToTh(targetEvent); + th.setAttribute('draggable',true);//添加交换列效果 this.drag.option = 'dragAble'; - this.currentDome = event.target; - let currentIndex = parseInt(currentElement.getAttribute("data-line-index")); + this.currentDome = th; + let currentIndex = parseInt(th.getAttribute("data-line-index")); this.drag.currIndex = currentIndex; }else{ // console.log("onTrMouseDown dragborder or draggable is all false !"); @@ -215,6 +217,18 @@ class TableHeader extends Component { } }; + /** + * 判断当前的target 是否是 th,如果不是,直接递归查找。 + * @memberof TableHeader + */ + getTargetToTh = (targetEvent) => { + let th = targetEvent; + if(targetEvent.nodeName.toUpperCase() != "TH"){ + th = this.getThDome(targetEvent); + } + console.log(" getTargetToTh: ", th); + return th; + } /** * 调整列宽的move事件 * @memberof TableHeader @@ -385,8 +399,8 @@ class TableHeader extends Component { if (!this.props.draggable) return; if(this.drag && this.drag.option != 'dragAble'){return;} let event = Event.getEvent(e) , - target = Event.getTarget(event); - + // target = Event.getTarget(event); + target = this.getTargetToTh(Event.getTarget(event)); let currentIndex = parseInt(target.getAttribute("data-line-index")); let currentKey = target.getAttribute('data-line-key'); @@ -485,6 +499,25 @@ class TableHeader extends Component { return null; } } + + /** + * 根据当前鼠标点击的节点,进行递归遍历,最终找到th + * @param {*} element + * @returns 对象 + * @memberof TableHeader + */ + getThDome(element){ + let _tagName = element.tagName.toLowerCase(); + if(element.getAttribute('data-filter-type') === 'filterContext')return null; + if(_tagName === 'i')return null; + if(_tagName != 'th'){ + return this.getThDome(element.parentElement); + }else{ + return element; + } + } + + //---拖拽列交换----end----- /**