如何自动获取HTML5的data-*属性示例代码详解


当前第2页 返回上一页

请注意:对于非 document 对象身上执行的 querySelector /querySelectorAll 将不支持,仍不会返回 dataset。 针对该问题,已于2013.1.16 通过重写 Element.prototype 方法解决。详细过程如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

if(!canSupportDataSet()){

    Element.prototype.dataset = {};

 

 

    modifyQuerySelectorAll_By(document);  // document 的好像不一样……

    modifyQuerySelectorAll_By(Element.prototype);

}

 

 

/**

 * 覆盖系统的 querySelector/querySelectorAll 方法。

 * @param host {Element.prototype/Document}

 */

function modifyQuerySelectorAll_By(host){

    var querySelectorAll = host.querySelectorAll; // 保存一个

    host.querySelectorAll = function(){

        var resultEls = querySelectorAll.apply(this, arguments);

        for(var resultEl, i = 0, j = resultEls.length; i < j; i++){

            resultEl = resultEls[i];

            resultEl.dataset = getAttrib(resultEl.attributes)

        }

 

 

        return resultEls;

    }

 

 

    // 也就是单个的 document.querySelectorAll()。不保存,直接覆盖

    host.querySelector = function(){

        var resultEls = host.querySelectorAll.apply(this, arguments);

        return resultEls ? resultEls[0] : null;

    };

}

测试例子:

1

2

3

4

5

6

7

8

9

<listview id="foo" data-id="1">

    Hello World

    <p data-id="2"></p>

</listview>

 

<script>

var el = document.querySelector('#foo');

alert(el.querySelector('p').dataset.id);

</script>

问题小结:

  1. 浏览器必须能够支持 querySelector/querySelectorAll 方法,否则该方法也没有意义;

  2. 只能从获取元素的方法提供 dataset。比如事件处理器中参数 e 的 e.tartget. dataset 则是空对象。

  3. 如上代码所示,单个的 querySelector() 是经过 querySelectorAll(),当中有遍历数组的操作,能否适当优化一下,使用原生的来做?

  4. 对于 CSS Selector Engine 速度敏感的同学,本方法不适用。因为修改系统方法,可见必然性能会下降。但可以保证,这种下降是属于小幅度的;

  5. 尚不支持 documeny.getElementByID,待增加之。

以上就是如何自动获取HTML5的data-*属性示例代码详解的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

HTML5中的常见错误用法

详解HTML5的video标签的浏览器兼容性增强方案

利用html实现一个个人信息表的网页(代码实例)

HTML5实现微信jssdk录音播放语音的实例

h5的filereader分布读取文件应该如何使用以及其方法简介

HTML5新增加的标签有哪些

html如何写超链接跳转提示代码

HTML5结合javascript实现简易音乐播放器

浅谈h5增强了哪些页面元素

利用HTML5实现简单的拖动功能

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...