Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我不能用jQuery设置我的数据属性?_Javascript_Jquery - Fatal编程技术网

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()获取数据属性“更好”多少呢?这值得困惑吗?