发生经过:我们有一个项目是需要将后台返回的html代码片段替换掉当前操作的这个节点,那么问题来了 这时候要用outerhtml来替换原来的dom,但是到这有问题了 。如果后台返回了你一段包含js的代码段那么是无法直接执行的。下面就是解决方案:
appendNewDom(item, newDom){ let prev = item.prev(); let next = item.next(); let parentDom = item.parent(); item.remove(); //只有一个元素 if(prev.length == 0 && next.length == 0){ parentDom.append(newDom); }else{ let tmp = prev.length == 1 ? {tag:"prev",dom:prev}:{tag:"next",dom:next}; if(tmp.tag == "prev"){ prev.after(newDom.get(0).outerHTML); }else{ next.before(newDom.get(0).outerHTML); } } },
这样就可以了 解释一下参数,item为当前dom的jq对象,newDom为新的jq对象