Jquery - 每个和数据()

时间:2010-09-09 08:56:44

标签: jquery

我怎么能用jquery获得所有“rt_XX”? 我不知道:/ ..希望有人可以帮助我。

$("body").data('conf_pkc', 'normal');
$("body").data('conf_sst', '0');
$("body").data("rt_01", { tw:'k25', title:'Bernd', descr:'man' });
$("body").data("rt_12", { tw:'k115', title:'Hugo', descr:'man' });
$("body").data("rt_55", { tw:'k25', title:'Jan', descr:'man' });

/*    
    $.each( XXXXXXXXXXXX , function(k, v){

        var rt_tw = $('body').data('rt_01').tw;
        var rt_tw = $('body').data('rt_01').tw;        

        $('#d1').append('rt_tw  -> '+rt_tw+'<br />');
        $('#d1').append('rt_title  -> '+title+'<br />');        
        $('#d1').append('rt_descr  -> '+descr+'<br />');

    });

*/  

http://www.jsfiddle.net/V9Euk/543/

提前致谢。 彼得

4 个答案:

答案 0 :(得分:4)

如果你正在使用jQuery 1.4+,你应该能够做到这样的事情:

var data = $("body").data();

for (p in data) {
   if (p.substring(0,3) == "rt_") {
      var x = data[p];
      alert(x.tw);
      alert(x.title);
      alert(x.descr);
   }
}

刚刚在您的链接上测试了这个。按预期工作!

祝你好运!

答案 1 :(得分:1)

由于只有一个<body>,所以绝对不需要将数据绑定到它(除非某些第三方小部件/插件正在使用数据)。

所有数据都可以保存在某个全局配置对象甚至全局变量中 - 要么优于$('body').data('foo')的开销。

怎么样:

var rt = []; // An array

rt[12] = {...};
rt[55] = {...};

注意:您可能希望使用对象({})而不是数组 - 在循环时,对象对于稀疏数组值会更友好。

答案 2 :(得分:1)

$("body").data('conf_pkc', 'normal');
$("body").data('conf_sst', '0');
$("body").data("rt_01", { tw:'k25', title:'Bernd', descr:'man' });
$("body").data("rt_12", { tw:'k115', title:'Hugo', descr:'man' });
$("body").data("rt_55", { tw:'k25', title:'Jan', descr:'man' });


var b    =  $('body');
var data = b.data();
var arey = [];

for(var i in data) {
   if(i.match(/rt_?\d{2}/) ) {
        arey.push(i);
    }
}

$.each(arey, function( index, val ) {
   var item = $('body').data( val )
    for(var i in item ) {
      (function(t) {
        console.log(val + ' => '+ t+ ' : ' +item[t]);
      })(i);
    }
});

在firebug上测试的代码,工作正常=)

演示 http://jsbin.com/ufoza3

答案 3 :(得分:-1)

试试这个:

value = jQuery.data($("body").find("xxx")[0], "rtxx)");

如果不使用[0],则需要遍历元素。这只是为了让你前进。