获取元素的内容(并包含元素本身)原生js 或 jQuery能实现吗?
都能,代码如下:
1、js:ele.outerHTML
2、jq: $(ele)[0].outerHTML
也许没看这篇文章前,很多做开发的朋友都会用上面的代码去实现。上面两种写法固然没错,只是我们要知道:其实用jq的话,不用把jq对象转换成js Dom对象也照样能实现获取元素的内容(并包含元素本身)!
怎么去写呢?先不急,我们先看下国外友人是怎么曲折实现的:
jQuery.fn.outerHTML = function(s) {
return (s)? this.before(s).remove(): jQuery("").append(this.eq(0).clone()).html();
}
外国朋友特地将这个功能写成一个jquery插件啦,这插件这样用:
获取:$(ele).outerHTML();
替换:$(ele).outerHTML("新替换内容");
通过jquery获取元素的内容(并包含元素本身),这功能是实现了。当然这种思路也可以借鉴学习下,但实际上自jQuery1.6版本后,有增加prop()方法,通过这个方法我们可以直接这样写:$(ele).prop("outerHTML") 。
也就是说
jQuery获取/替换元素的内容(并包含元素本身),可直接这么写:
获取:$(ele).prop("outerHTML");
替换:$(ele).prop("outerHTML","新替换内容");
参考资料:
怎样用jQuery自带方法/函数来获取outerHTML属性
jQuery类库实现:innerHTML和outerHTML
jQuery: outerHTML
js outerHTML、innerHTML和innerText的用法区别