ajax请求时无法使用attr,jQuery .data()不起作用,但.attr()可以

博客探讨了一个关于jQuery中.data()方法在设置初始为空的data属性时可能无法正常工作的问题。开发者发现,当使用.data()设置值时,后续使用.data()获取会返回空字符串,而使用.attr()则能正确设置和获取。示例代码展示了这个问题,其中对DOM元素的数据属性进行操作,.data()未能更新data-tofilllater属性,而.attr()则成功设置了值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jQuery .data()不起作用,但.attr()可以

原谅我没有更具体的这一点。我有这么奇怪的错误。在doc加载之后,我循环了一些原来的元素data-itemname="",并使用它来设置这些值.attr("data-itemname", "someValue")。

问题:当我后来循环通过这些元素时,如果我这样做elem.data().itemname,我会得到"",但如果我这样做elem.attr("data-itemname"),我会得到"someValue"。这就像jQuery的.data()getter只获取最初设置为包含某些值的元素,但如果它们最初是空的,稍后设置,则稍后.data()不会获得该值。

我一直试图重新创建这个bug,但一直没能。

编辑

另外,链接上面的片段......

JS:var theaters = [

{ name: "theater A", theaterId: 5 },

{ name: "theater B", theaterId: 17 }];$("#theaters").html(

$("#theaterTmpl").render(theaters));// DOES NOT WORK - .data("name", "val") does NOT set the valvar theaterA = $("[data-theaterid='5']");theaterA.find(".someLink").data("tofilllater", "theater5link"); // this does NOT set data-tofilllater$(".someLink[data-tofilllater='theater5link']").html("changed link text"); // never gets changed// WORKS - .attr("data-name", "val") DOES set valvar theaterB = $("[data-theaterid='17']");theaterB.find(".someLink").attr("data-tofilllater", "theater17link"); // this does set data-tofilllater$(".someLink[data-tofilllater='theater17link']").html("changed link text");

HTML:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值