当前位置 : 主页 > 网页制作 > JQuery >

jquery通过.data()无法为键分配值

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个非常简单(一个人会想到)的任务. 将值传递给弹出窗口,并根据单击(继续或取消)使用传递的值执行操作. // on click we pass the value to the function testing - so far so good$('#numbers').delegate(
我有一个非常简单(一个人会想到)的任务.

将值传递给弹出窗口,并根据单击(继续或取消)使用传递的值执行操作.

// on click we pass the value to the function testing - so far so good
$('#numbers').delegate('.icondelete', 'click', function(){
    testing( $(this).attr('data-options') ); 
});

我将找到的值传递给函数,然后尝试将其赋值给一个键

function testing(id){
   //we can see that it passed successfully
    alert("here it is: " + id); 

     //push the data into key data-id
    $('#dodelete').data('data-id',id);

//but this alert doesn't return the value
alert("it should be here shouldn't it? " + $('#dodelete').attr('data-id'));
    }

HTML

<div id='numbers' >
<div class='icondelete'  data-options='123' >Set data-options as 123 - click here to test</div>
</div>

<br><br>
<div id='dodelete' data-id=''>landing div</div>

如果您查看小提琴http://jsfiddle.net/Microbe/cRLfC/4/,您可以看到该值传递给函数no probs,但是当我尝试将其分配给键时它不会.

我哪里错了?

使用.data()时,请勿添加数据前缀.读取值时,请使用.data(“key”),而不是.attr().我建议阅读 this并查看代码示例.

所以你的代码应该是这样的:

function testing(id) {
   //we can see that it passed successfully
    alert("here it is: " + id); 

     //push the data into key myid
    $('#dodelete').data('myid', id);

    //but this alert doesn't return the value
    alert("it should be here shouldn't it? " + $('#dodelete').data('myid'));
}

通过.data()设置值实际上并不在具有该值的对象上设置属性/属性.数据实际上存储在jQuery数据结构中,并且不是使用.attr(“key”)检索,而是使用.data(“key”)检索.

如果你想设置一个实际的属性,用.attr(“key”,value)来做,虽然在jQuery编码中,使用.data()通常比自定义属性更好.

您自己唯一一次使用数据前缀的方法是,如果您根据自定义属性的HTML5标准在HTML中添加自定义属性:

<div id="myObject" data-numloops="20"></div>

然后,您可以通过以下方式阅读:

var loopCnt = $("#myObject").data("numloops");

在查询数据值时,jQuery将首先查看自己的内部存储.如果在那里找不到,它将查找与名称匹配的HTML5数据属性.

网友评论