javascript - jQuery的.data()添加的数据在HTML上面看不见的吗?
迷茫
迷茫 2017-04-10 14:28:40
[JavaScript讨论组]

html结构如下:

<p></p>

JS如下:

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

那么这个blah的“hello”的值我在那个p里面是不是看不到?如果看不到,那在开发的时候怎么记得这东西?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(6)
天蓬老师
  1. 这个“hello”的值并没有存在对应的那个p上,而是存在jQuery.cache这个对象上,所以你当然看不见。
    $().data()方法设置数据的时候用一个唯一自增的id将jQuery.cache跟DOM对象关联起来。
    详细请参考:http://www.cnblogs.com/snandy/archive/2011/06/10/2077298.html
  2. 没太明白po主这个问题的意思。。。是记不住“hello”这个值还是记不住“blah”这个key啊?自己设置的怎么会不记得呢?
黄舟

确实看不见的。
至于如何修改和获取,获取$ele.data('key')和设置$ele.data('key','value')
为何建议使用data而不用在html上进行属性设置,我也不知道啊。求具体解答。
data上倒是通常可以用来存放对象,这个在jquery面向对象的插件写法上很常见哦。

巴扎黑

如果题主希望记住的话,直接存在该 p 的自定义属性 blah 里面即可:

  $("p").attr('blah', $("p").data("blah"));

效果如下:

再取值的话就可以直接读 p 的属性值:

$("p").attr('blah')

实际上,一般直接读 $("p").data("blah") 的值即可,如果题主一定需要存在 DOM 内,就按照上述写法吧,个人感觉有些 hard code,而且兼容性也需验证

PHP中文网

data存放的数据的生命周期是多久啊

怪我咯

html标签里的data-只是给data赋初值,证据是用data方法改变数据后再拿attr('data-')改变不起效果

PHPz

jQuery在某个版本里,.data(key, value)中value可以存储任意对象而不限于简单类型。
为此付出的代价是,把dom用一个(印象中)叫jQuery-ID的东西进行唯一标识,然后用jQuery.cache做k-v字典,于是dom上只能看到jQuery-ID,而实际上data数据都是存在那个字典里的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号