【前端】三个bug
2018-06-24 00:12:07来源:未知 阅读 ()
目录
一、Array对象的indexOf()
二、使用jquery,clone()下拉框问题
三、jquery获取获取html5的data-*属性
一、Array对象的indexOf()
1、indexOf()定义:
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
2、bug描述
var arr = ["1","2"];
console.log(arr.indexOf(1)); // -1 为何是-1?
3、解释
indexOf() 会做强类型校验。
二、clone下拉框问题
1、clone()定义
clone() 方法生成被选元素的副本,包含子节点、文本和属性。
2、bug描述
如下图片:
先将select值选为2。点击clone后,新增的select选中项为1;
如何才能保证clone的select元素,选中的项也一样?
... <div> <select> <option>1</option> <option>2</option> </select> </div> <br/><button>clone</button> <script>
$('button').click(function(){ var select1 = $('select').clone(); $('div').append(select1); }); </script>
3、解决方法:
//对下拉框增加change事件。每次改变下拉框,手动增加selected属性;
$('select').change(function(){
$(this).find('option[selected]').removeAttr('selected');
$(this).find('option:selected').attr('selected','selected');
});
三、jquery获取获取html5的data-*属性
1、html的data-*属性
定义和用法
data-* 属性用于存储页面或应用程序的私有自定义数据。
data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。
存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。
data-* 属性包括两部分:
- 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符
- 属性值可以是任意字符串
注释:用户代理会完全忽略前缀为 "data-" 的自定义属性。
2、jquery的data()方法
data() 方法向被选元素附加数据,或者从被选元素获取数据。
3、bug描述
<select data-test="1"> <option>1</option> <option>2</option> </select> <button>change</button> <script>
//点击button后,会对select的data-test属性赋值为2; 然后进行读取 $('button').click(function(){ $('select').data('test','2'); console.log($('select').data('test')); // 2 console.log($('select').attr('data-test')); // 1 为何两个结果不一致呢?
}); </script>
4、解释
之前我一直理解的是: 如果一个元素的属性为data-test ,那么$().data('test') 和 $().attr('data-test')是一个等价的存在。
正确的解释如下:
data()的值进行修改并不会影响到DOM元素上的data-*属性的改变。
data()的本质其实是将一个 “cache” 附加到了对象上,并使用了一个特殊的属性名称。
参考链接:
js,jQuery获取html5的data-*属性
jQuery.data() 的实现方式
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:更改angular的默认端口
- js调用刷新界面的几种方式 2020-03-05
- 高性能JavaScript循环语句和条件语句 2020-02-21
- Javascript实现前端简单的路由实例 2019-12-17
- 带你了解JavaScript 2019-10-29
- Nightwatch——自动化测试(端对端e2e) 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash