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 相关文章推荐
鼠标经过tr时,改变tr当前背景颜色
Jan 13 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
Mar 09 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 Javascript
微信小程序录音与播放录音功能
Dec 25 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
JavaScript实现简单的计算器
Jan 16 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
vue select 获取value和lable操作
Aug 28 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 无限级缓存的类的扩展
2009/03/16 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
Python连接DB2数据库
2016/08/27 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
python中id函数运行方式
2020/07/03 Python
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
2014全国两会学习心得体会2000字
2014/03/10 职场文书
剪彩仪式主持词
2014/03/19 职场文书
跑操口号
2014/06/12 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
详解如何使用Nginx解决跨域问题
2022/05/06 Servers