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


Posted in Javascript onApril 07, 2011

查看源码

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 相关文章推荐
html数组字符串拼接的最快方法
Sep 16 Javascript
JavaScript中的集合及效率
Jan 08 Javascript
jquery自定义属性(类型/属性值)
May 21 Javascript
js检测输入内容全为空格的方法
May 03 Javascript
jQuery实现文件上传进度条特效
Aug 12 Javascript
浅析Node.js:DNS模块的使用
Nov 23 Javascript
关于 jQuery Easyui异步加载tree的问题解析
Dec 06 Javascript
AngularJS 验证码60秒倒计时功能的实现
Jun 05 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
Oct 18 Javascript
vue element动态渲染、移除表单并添加验证的实现
Jan 16 Javascript
layui table设置某一行的字体颜色方法
Sep 05 Javascript
ES6实现图片切换特效代码
Jan 14 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 #Javascript
jQuery为iframe的body添加click事件的实现代码
Apr 07 #Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 #Javascript
Jquery Ajax的Get方式时需要注意URL地方
Apr 07 #Javascript
jquery对表单操作2
Apr 06 #Javascript
jQuery对表单的操作代码集合
Apr 06 #Javascript
24款非常有用的 jQuery 插件分享
Apr 06 #Javascript
You might like
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
第四章 php数学运算
2011/12/30 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
layui表格数据重载
2019/07/27 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
集体备课反思
2014/02/12 职场文书
学校元旦晚会方案
2014/02/19 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
个人收入证明范本
2015/06/12 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Go 中的空白标识符下划线
2022/03/25 Golang