html5之data-属性

这是我第一次发现data-这个属性,记录下来也算是工作中的积累(不积跬步无以至千里嘛)。  

------------------------------------------------------------------------------------------------------------------------------------------------------

今天在修改代码的时候发现以下代码(代码并不是我写的):

<a href="#" class="dropdown-toggle"  data-toggle="dropdown"></a>


刚开始我以为这仅仅是标签自定义属性,为了之后的代码使用,但继续调查看到下面的代码后,我觉得没这么简单:

$(this).data('toggle')


疑问1如果是自定义属性,用jquery的常用该属性的值得访问方式应该是这样:$(this).attr("data-toggle")

疑问2跟jquery的data()方法有什么关系?

             jquery的data方法是用于向元素存键值对,以及取键对应的值的。例如

            $("div").data("blah", "hello");     // 将blah设置为hello

            $("div").data("blah");                 // hello       去除blah的值

------------------------------------------------------------------------------------------------------------------------------------------------------

经过调查对以上问题进行一一回答:

回答1:摆渡上搜索了一下,大致了解到时html5的东西,所以继续到w3school查看。

      w3school网站(http://www.w3school.com.cn)上对html5的属性列表中有这么一项

属性
值              
描述
data-yourvaluevalue

创作者定义的属性。

HTML 文档的创作者可以定义他们自己的属性。

必须以 "data-" 开头。

      所以明白了以下内容:

       ①html5才有的属性,也就意味着如果在非html5场合中使用,那就完全是一个自定义属性了。

       ②因为本身也是自定义属性,所以用$(this).attr("data-toggle")的方式取值是完全没问题的。

       ③必须以data-   开头

回答2:在html5的环境下,有两种访问data的方式,

还是以最初的例子<a id="testA"  href="#" class="dropdown-toggle"  data-toggle="dropdown" data-role-name="arolename"></a>作为说明,我们新添加一个data-属性(data-role-name)

       ①:不采用html5,采用dataset的方式。

       应用了data-属性的元素含有dataset的属性,可以直接访问dataset的各项,如下:

         var testA =  document.getElementById("testA");

         alert(testA.dataset.toggle);     //dropdown

          细心的话会发现访问data-属性时并没有加上前缀,如上例访问的是toggle而不是data-toggle,这就是规则1。

         规则1:data-属性访问时不能带前缀;

         再把第二个data-属性也alert出来  :alert(testA.dataset.roleName);     //arolename 

         会发现data-后面明明是”role-name“怎么变成了roleName,这就是规则2。

         规则2:访问data-属性时,其后面的用-分割的字符要采用驼峰的写法。

          ②:用jquery调用data-属性的方式。

          jquery的data方法能完美的支持data-属性,但同样要使用上面两个规则,如:

          $("#testA").data("toggle");             //dropdown     

          $("#testA").data("roleName");      // arolename 

------------------------------------------------------------------------------------------------------------------------------------------------------

以上问题回答完了,因为查询了资料还学习到其他东西,所以做个额外补充:

<a id="testA"  href="#" class="dropdown-toggle"  data-toggle="dropdown"data-role-name="arolename"></a>


data-属性的增删改

var testA =  document.getElementById("testA");

①data-属性的删除       delete   testA.dataset.toggle;

②data-属性的增加       testA.dataset.newAdd = "123";

③data-属性的修改       testA.dataset.roleName= "brolename";


浏览器支持情况:

  • Internet Explorer 11+
  • Chrome 8+
  • Firefox 6.0+
  • Opera 11.10+
  • Safari 6+




      




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值