Tenho uma dica rápida!
Não sei se você que esta lendo já sabe, mas de sempre (bom, ie 5.5 eu não existia!) você pode utilizar atributos ao seu gosto no HTML.
Por exemplo,
<a href="www.google.com.br">Ir para o google</a>
Você pode criar um novo atributo, por exemplo, mynewattr
<a href="www.google.com.br">Ir para o google</a>
Para você acessar o valor, você deve utilizar o método do DOM Element attributes, que retorna uma array. Mas como é chato pra caramba usar, também tem o mentodo getAttribute.
Então voce pode fazer
var value = elment.getAttribute('mynewattr')
Porém! Nos dias de hoje você pode utilizar a jQuery, com a função attr.
var values = $('element').attr('mynewattr');
e para atribuir
$('element').attr('mynewattr', 'value');
Portanto, isso facilita muito as coisas.
(sem fontes) No HTML 5 foi dito que tais atributos devem vir com o prefixo “data-”, portanto, você pode utilizar qualquer nome, desde que comece com data-,
por exemplo:
<a href="www.google.com.br">Ir para o google</a>
Ontem eu tive que fazer com que as imagens de uma determinada página fosse carregada uma por vez, pois ao carregar todas ao mesmo tempo o servidor perdia a sessão (RAM #fail)!
Então, no HTML, alterei todas as tags imgs de:
<img src="/src/pesado/pra/dedeu" />
para:
<img data-src="/src/pesado/pra/dedeu" />
E o javascript:
var pl = function(){
var
list = [],
init = function(){
var imgs = $('img[data-src]');
imgs.each(function(x,m){list.push($(m))});
imgs.load(_loadNext);
var img = list.shift();
if (img){
img.fadeOut();
img.attr('src', img.attr('data-src'));
}
},
_loadNext = function(e){
var img = list.shift();
$(this).fadeIn('slow');
if (img){
img.attr('src', img.attr('data-src'));
}
};
return {
init:init
};
}();
$(pl.init);
Este código captura todas as imagens que tem o atributo, em cada uma adiciona numa array a versão jQueryzada, e depois no onLoad das imagens carrega a próxima.
E, da um “tiro” inicial para disparar os loads.
Essa parte ta meio ruim, acho que tem alguma forma de tirar o código duplicado e chamar direto o loadNext, mas precisaria mudar o this para outra coisa.