是否有可能循环穿过data()对象?

假设这是我的代码:

$('#mydiv').data('bar','lorem');  
$('#mydiv').data('foo','ipsum');  
$('#mydiv').data('cam','dolores');

我如何通过这个循环?可以each()被用于此?

有帮助吗?

解决方案

的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);
});

您可以只使用亚光B的建议,但是这是如何与你有什么权利现在就做。

其他提示

$.each($.data(this), function(i, e) {
   alert('name='+ i + ' value=' +e);
});

这将通过在“这个”元素的数据对象中的每个属性迭代。

与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);
});

我不认为有,让你所有已添加了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);
}

我只是尝试这样做,但需要一些额外的数据值。如果你也有这个“问题”,那么下面应该工作。

$('#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 );
});

如果我们使用。数据()表示其存储与匹配元素相关联的任意数据或在指定的数据存储在该组匹配元素的返回值的第一个元素。

和如果。数据()中循环所以我们必须访问相同的方式在环路所以e.g(下面)

<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>

在我的循环和data-today的HTML是在所有标签相同的,但它们的值是不同的,因此基本上是循环产生html所以我们必须在相同的方式即环路访问js/jQuery为例如(below jQuery code)

$('.weekday').each(function(){ $(this).data('today'); });

OutPut :

Monday
Tuesday
Wednesday
Thursday

注意:在浏览器控制台将其返回特定<DIV>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top