2010-09-09 98 views
3

我怎樣才能得到所有「rt_XX」與jquery每個? 我不知道:/ ..希望有人能幫助我。jquery - each和data()

$("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

如果你正在使用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

由於只有一個<body>絕對不需要綁定數據(除非某些第三方小部件/插件正在使用數據)。

所有數據都可以保存在某個全局配置對象中,甚至是全局變量 - 要麼會比$('body').data('foo')的開銷要好。

如何:

var rt = []; // An array 

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

注意:您可能需要使用一個對象({})而不是數組 - 循環當一個對象將與值的稀疏陣列更友好。

-1

試試這個:

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

你會通過元素需要循環,如果你不[0]使用。這只是爲了讓你走。

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

代碼上螢火測試,工程罰款=)

演示http://jsbin.com/ufoza3