jQuery获取data-*属性值下面就详细介绍四种方法获取data-*属性的值

本文详细介绍了在JavaScript中获取HTML元素data-*属性的四种方法:getAttribute(), dataset(), jQuery的data()和attr()。通过实例展示了如何读取和设置data属性,并对比了它们之间的区别和使用场景。特别是jQuery的data()方法,它是一种缓存机制,修改data()的值不会直接影响DOM元素的data-*属性。

jQuery获取data-*属性值

下面就详细介绍四种方法获取data-*属性的值

<li id="getId" data-id="122" data-vice-id="11">获取id</li>

需要获取的就是data-id 和 dtat-vice-id的值


一:getAttribute()方法

const getId = document.getElementById('getId');
// //getAttribute()取值属性
console.log(getId.getAttribute("data-id"));//122
console.log(getId.getAttribute("data-vice-id"));//11
// //setAttribute()赋值属性
getId.setAttribute("data-id","48");
console.log(getId.getAttribute("data-id"));//48

二:dataset()方法

//data-前缀属性可以在JS中通过dataset取值,更加方便
console.log(getId.dataset.id);//112
//data-vice-id连接取值使用驼峰命名法取值 
console.log(getId.dataset.viceId);//11

//赋值
getId.dataset.id = "113";//113
getId.dataset.viceId--;//10

//新增data属性
getId.dataset.id2 = "100";//100

//删除,设置成null,或者delete
getId.dataset.id2 = null;//null
delete getId.dataset.id2;//undefind

三:jquery data()方法

var id = $("#getId").data("id"); //122
var viceId = $("#getId").data("vice-id"); //11
//赋值
$("#getId").data("id","100");//100

jquery data 是一种缓存机制

用法如下:

data()方法

//HTML代码 <div id="myDiv" data-appid="123" data-myname="lsxj" data-app-id="456" data-my-name="secondname"></div>

//获取属性
var appid = $("#myDiv").data("appid"); //123
var app-id = $("#myDiv").data("app-id"); //456

//属性赋值 $("#myDiv").data("appid","666");

//最终HTML代码 <div id="myDiv" data-appid="123" data-myname="lsxj" data-app-id="456" data-my-name="secondname"></div>

需要注意的是,data()的值进行修改并不会影响到DOM元素上的data-*属性的改变。data()的本质其实是将一个 “cache” 附加到了对象上,并使用了一个特殊的属性名称。

所以上述代码中,虽然对div进行了data()赋值操作,但HTML代码中div的data-appid的值仍然为123,因为data()只是修改了缓存的那个值,此时进行$('#myDiv').data("appid")的操作,输出的结果为666.

四:jquery attr()方法

var id = $("#getId").attr("data-id"); //122
var viceId = $("#getId").attr("data-vice-id"); //11
//赋值
$("#getId").attr("data-id","100");//100

参考:

http://www.cnblogs.com/lzijian/p/6322868.html

https://blog.youkuaiyun.com/jx950915/article/details/78931509

JavaScript 中,可以通过以下几种方式获取 HTML 元素上的 `data-*` 自定义属性: ### 1. 使用 `dataset` 属性 每个 DOM 元素都有一个 `dataset` 属性,它是一个对象,包含了所有以 `data-` 开头的自定义属性。通过访问 `dataset.propertyName` 可以直接读取对应的。例如: ```javascript const element = document.getElementById("myElement"); const customValue = element.dataset.customData; // 获取 data-custom-data console.log(customValue); // 输出: "Hello, World!" ``` 这种方式简洁且推荐用于现代浏览器环境中[^1]。 ### 2. 使用 `getAttribute()` 方法 如果需要兼容更旧的浏览器或者动态处理属性名称,可以使用 `getAttribute()` 方法获取 `data-*` 属性的原始字符串: ```javascript const element = document.getElementById("myElement"); const customValue = element.getAttribute("data-custom-data"); // 获取 data-custom-data console.log(customValue); // 输出: "Hello, World!" ``` 这种方法适用于任何类型的属性,并且能够准确获取当前属性,不会受到缓存的影响[^3]。 ### 3. 在事件处理中获取 `dataset` 当元素嵌套较深时,为了确保获取到的是绑定事件元素自身的 `data-*` 属性值,而不是子元素的,应该使用 `event.currentTarget.dataset` 而不是 `event.target.dataset`。示例如下: ```html <div> <div data-index="1" onclick="handleClick(event)"> <span>小强</span> </div> <div data-index="2" onclick="handleClick(event)"> <span>小红</span> </div> </div> ``` ```javascript function handleClick(event) { const dataset = event.currentTarget.dataset; const index = dataset.index; console.log("当前元素 index 为", index); } ``` 这样即使点击的是 `<span>` 元素,也能正确获取到父级 `<div>` 上的 `data-index` [^4]。 ### 4. 注意 jQuery 缓存问题 如果同时使用原生 JavaScriptjQuery 操作 `data-*` 属性,需要注意 jQuery 的 `.data()` 方法会将首次读取的缓存,之后即使用原生方法修改了属性值jQuery 也不会更新缓存。要强制 jQuery 获取最新的,必须使用 `.removeData()` 清除缓存后再调用 `.data()`: ```javascript $("#myElement").removeData("customData"); const updatedValue = $("#myElement").data("customData"); ``` 这种方式可以解决 jQuery 与原生 JS 混合使用时的数据同步问题[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值