jQuery通过data()对象循环
是否可以循环通过jQuery通过data()对象循环,jquery,loops,each,Jquery,Loops,Each,是否可以循环通过data()对象 假设这是我的代码: $('#mydiv').data('bar','lorem'); $('#mydiv').data('foo','ipsum'); $('#mydiv').data('cam','dolores'); 我该如何循环处理这个问题?each()可以用于此吗?我认为没有任何函数可以为您提供与data()函数一起添加的数据的所有“键”,但是,为什么不将所有数据放在对象/映射下的函数中呢 大概是这样的: var container = new
data()
对象
假设这是我的代码:
$('#mydiv').data('bar','lorem');
$('#mydiv').data('foo','ipsum');
$('#mydiv').data('cam','dolores');
我该如何循环处理这个问题?
each()
可以用于此吗?我认为没有任何函数可以为您提供与data()
函数一起添加的数据的所有“键”,但是,为什么不将所有数据放在对象/映射下的函数中呢
大概是这样的:
var container = new Object();
container.bar = "lorem";
container.foo = "ipsum";
container.cam = "dolores";
$("mydiv").data("container", container);
然后,当您想要读取数据/遍历数据时:
var blah = $("mydiv").data("container");
for(key in blah) {
var value = blah[key];
//do whatever you want with the data, such as:
console.log("The value of ", key, " is ", value);
}
jQuery将所有数据信息存储在jQuery.cache内部变量中。使用此简单但有用的插件,可以获取与特定对象相关的所有数据:
jQuery.fn.allData = function() {
var intID = jQuery.data(this.get(0));
return(jQuery.cache[intID]);
};
有了此功能,您可以执行以下操作:
$('#myelement').data('test1','yay1')
.data('test2','yay2')
.data('test3','yay3');
$.each($('#myelement').allData(), function(key, value) {
alert(key + "=" + value);
});
你可以使用matt b的建议,但这就是如何利用你现在拥有的
$.each($.data(this), function(i, e) {
alert('name='+ i + ' value=' +e);
});
这将遍历“This”元素的数据对象中的每个属性。使用jQuery 1.4和@user292614的提示测试了以下工作:
$('#mydiv').data('bar','lorem');
$('#mydiv').data('foo','ipsum');
$('#mydiv').data('cam','dolores');
$.each( $('#mydiv').data(),function(i, e) {
alert('name='+ i + ' value=' +e);
});
我只是尝试了一下,但需要一些额外的数据值。如果你也遇到了这个“问题”,那么下面的方法应该可以奏效
$('#mydiv').data('bar', {name:'lorem', id:'156', price:'199'});
然后您可以简单地使用值id进行扩展
$.each( $('#mydiv').data(),function(i, e) {
alert('name='+ i + ' name=' +e.name + ' id='e.id + ' price=' + e.price );
});
如果使用.data(),则表示它存储与匹配元素关联的任意数据,或在命名数据存储中返回匹配元素集中第一个元素的值
如果.data()在循环中,那么我们必须以循环中相同的方式访问它,例如(如下)
注意:在浏览器控制台中,如果它是一个内部变量,它将返回特定的
,这是否会在jquery的更高版本中发生更改(可能没有通知)?我肯定他们可以,但我不确定为什么会这样做。他们可能对数据功能进行的任何重组都可能包括内置的此功能。我不认为这是回避它的一个正当理由,但我想这是一个需要记住的问题。这对我来说不起作用,我不得不稍微修改它:$.each($('#mydiv').data(),函数(I,e){alert(I+“:“+e);})代码>
<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>
Monday
Tuesday
Wednesday
Thursday