2010-09-09 7 views
3

comment puis-je obtenir tout "rt_XX" avec jquery chacun? Je n'ai aucune idée:/.. J'espère que quelqu'un peut m'aider.Jquery - each et 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/

Merci à l'avance. Peter

Répondre

4

Si vous utilisez jQuery 1.4+, vous devriez être en mesure de faire quelque chose comme ceci:

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

testé cela à juste votre lien. Fonctionne comme prévu!

Bonne chance!

1

Comme il n'y a qu'un seul <body>, il n'est absolument pas nécessaire d'y associer des données (sauf si des données sont utilisées par un widget/plugin tiers).

Toutes les données peuvent être conservées dans un objet de configuration globale ou même dans des variables globales - soit mieux que le préfixe $('body').data('foo').

Que diriez-vous:

var rt = []; // An array 

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

Remarque: vous pouvez utiliser un objet ({}) au lieu d'un tableau - un objet serait plus convivial avec un tableau clairsemé de valeurs lors de la boucle.

-1

Essayez ceci:

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

Vous aurez besoin de boucle à travers les éléments si vous ne l'utilisez pas [0]. C'est juste pour vous y mettre.

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

code testé sur Firebug, Fonctionne bien =)

Demo: http://jsbin.com/ufoza3