Javascript 为什么我不能用jQuery设置我的数据属性?
我有以下资料:Javascript 为什么我不能用jQuery设置我的数据属性?,javascript,jquery,Javascript,Jquery,我有以下资料: editCity: "/Admin/Citys/Edit?pk=0001I&rk=5505005Z" $('#editCity') .attr('title', "Edit City " + rk) .data('disabled', 'no') .data('href', editCity) .removeClass('disabled'); 当我使用开发人员工具检查HTML时,我看到: <div class="button d
editCity: "/Admin/Citys/Edit?pk=0001I&rk=5505005Z"
$('#editCity')
.attr('title', "Edit City " + rk)
.data('disabled', 'no')
.data('href', editCity)
.removeClass('disabled');
当我使用开发人员工具检查HTML时,我看到:
<div class="button dialogLink" id="editCity"
data-action="EditCity" data-disabled="yes"
data-entity="City" title="Edit City 5505005Z" ></div>
除href外,所有内容都已更新。有人知道我做错了什么吗?使用
var editCity = "/Admin/Citys/Edit?pk=0001I&rk=5505005Z";
您所做的是一个字符串,只包含一个字符串文字,缺少一个分号
顺便说一句,jQuery不用于数据属性,而只是用于将JS对象与DOM元素关联。不能将href属性设置为div。
您可以使用data href代替,或者使用a-tag代替div。我认为jQuery会在内部存储数据,如果您第一次设置数据时数据不存在的话。如果你真的想强迫它:
$("#editCity").attr("data-href",editCity)
他没有设置“href”属性。他正在设置一个“data”属性,而这些属性没有实现为属性。我使用的是。data没有尝试将其设置为data href?@Anne否绝对没有-
.data()
机制将从data xyz
属性读取初始值,但它永远不会更新这些属性。.data()
机制完全是jQuery的内部机制。很抱歉,可能我不清楚。我确实使用了var,但当我将鼠标悬停在editCity上时,我显示的输出来自调试。@Anne当您使用.data()
存储带有DOM元素的属性时,您将不会在调试器中看到这些属性。它们存储在jQuery内部的映射对象中。@Bergi-现在我真的很困惑。我认为.data(“xxx”,“thedata”)与.attr(“data xxx”,“thedata”)相同@Bergi-从jQuery1.4.3HTML5数据开始-属性将自动拉入jQuery的数据对象(来自文档)@Anne:不,不是。没有序列化,它将任何js对象存储为“DOM元素的属性”(但以内存泄漏保存方式)。如果找不到任何关联,它仅将数据属性用作回退。如果使用的是至少1.6版的jQuery,则最好使用.prop()
设置“title”属性,而不是.attr()
。是的jQuery将数据存储在Dom元素上,而这不会反映在live html中。jQuery在某些情况下确实会退回到数据属性,这一事实确实令人担忧me@VeXiijQuery只从数据foo
属性中读取值。它不会更新那些属性值。这是我书中的“某些情况”,看到了很多关于that@VeXii库永远不会在DOM元素上存储值,除非代码明确要求它使用.attr()
或.prop()
。从数据foo
属性中获取数据并没有风险。那么,使用.data()然后使用.prop()或.attr()获取数据属性“更好”多少呢?这值得困惑吗?