作家
登录

JQuery中html()方法使用不当带来的陷阱

作者: 来源:www.28hudong.com 2013-03-30 00:55:48 阅读 我要评论

查看源码 复制代码 代码如下: return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(rinlinejQuery, "") : null; 得知其通过非标准的但所有浏览器都支持的innerHTML实现。 有些使用者会用html()方法的返回值作为代码分支的条件,比如: 复制代码 代码如下: var str = $('#user').html(); if( str=='jack' ){ ... }else if( str=='tom' ){ ... }else if( str=='lily' ){ ... } 多数情况下这没什么问题,但如果id=user的html元素内有空格,则不会得到想要的结果了。比如: 复制代码 代码如下: <div id="user"> jack</div> <script> alert(document.getElementById('user').innerHTML.length); </script> div[id=user]内文本jack前不小心多了3个空格,这时候在各浏览器表现不一样: IE6/78中,弹出字符串的长度是4,即忽略了空格。 IE9/Firefox/Safari/Chrome/Opera中,弹出则是7,即没有忽略空格。 这时候拿.html()的返回值作为代码分支的条件明显在非IE浏览器中会出错。 如果非要使用元素的html内容作为判断条件,解决办法很简单 1,写html时去掉空格 2,调用html()方法后再调用trim,如var str = $('#user').html().trim(); 相关: http://www.w3.org/TR/2008/WD-html5-20080610/dom.html#innerhtml0仅IE6/7/8中innerHTML返回值忽略英文空格的问题

  推荐阅读

  Javascript 自适应高度的Tab选项卡

JS部分具体的代码如下: 复制代码 代码如下: var getSiblingNode=function(className,elAr,el,not){ className=" "+className+" "; var Arr=[]; for(var i=0,l=elAr.length;i<l;i++){ if(elAr[i]!=el&&(elAr[i].no>>>详细阅读


本文标题:JQuery中html()方法使用不当带来的陷阱

地址:http://www.17bianji.com/kaifa2/JS/24723.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)