Pessoal, estou apendendo javascript agora e surgiu uma dúvida.
Estou populando a lista de usuários normalmente, mas quando entro na tela pela segunda vez os registros são duplicados.
Lembrando que via json está trazendo corretamente.
Como poderia solucionar esse problema?
function listaUsuarios() {
//$("#usuarios").empty();
mainView.router.load({pageName: 'usuario'});
$.get(WS_URL + 'usuario/list', function(data){
$(data).each(function(i){
var clone = $('#usuarios li').first().clone().show();
clone.find('.item-title').text(this.nome);
clone.find('.item-after').text(this.email);
$('#usuarios').prepend(clone);
});
}).done(function(){
});
};
<div class="content-block-title">Lista Usuários</div>
<div class="list-block">
<ul id='usuarios'>
<li style='display:none'>
<div class="item-inner">
<div class="item-media"><i class="icon icon-f7"></i></div>
<div class="item-title"></div>
<div class="item-after"></div>
</div>
</li>
</ul>
</div>
</div>
Obrigado
Boa tarde,
Tente colocar o $('#usuarios').append("");
depois dessa linha `$.get(WS_URL + ‘usuario/list’, function(data){``.
@campelo.m, obrigado pela ajuda.
Não deu certo. Será que eu teria que montar toda a estrutura da
antes?
Bom dia,
Com o clone creio que nao ira funcionar;
Fiz um exemplo aqui
1 curtida
@campelo.m
Amigão, muito obrigado mesmo por ter disponibilizado seu tempo para ajudar.
Funcionou certinho.
Agora consigo replicar para toda tela que precisar de uma lista.
Cobra o café que pago. rsrs
1 curtida
@campelo.m, posso abusar da sua boa vontade?
$(data).each(function(i){
var html = '';
$('ul#usuarios')[0].innerHTML = '';
//var usuario = this;
$(data).each(function(i){
//usuario = this;
//var clone = $('#usuarios li').first().clone().show();
//clone.find('.item-title').text(this.nome);
//console.log("b");
html += '<a href="#" class="item-link item-content">' +
'<li style="display:inline">'+
'<div class="item-inner">'+
'<div class="item-media">'+
'<i class="icon icon-f7"></i>'+
'</div>'+
'<div id="nomeUsuarioSelecionado" class="item-title">'+this.nome+'</div>'+
'<div class="item-after">'+this.email+'</div>'+
'</div>'+
'</li>' +
'</a>';
});
$('#usuarios').append(html);
$("#usuarios li").click(function() {
alert($('#nomeUsuarioSelecionado').text());
alert(this.id); // id of clicked li by directly accessing DOMElement property
alert($(this).attr('teste')); // jQuery's .attr() method, same but more verbose
alert($(this).html()); // gets innerHTML of clicked li
alert($(this).text()); // gets text contents of clicked li
alert($('html').attr('#item-title'));
alert($( this ).parent( ".item-title" ));
});
});
Como eu pego o “item-tilhe” e o “item-after”?

Assim voce pode pegar:
console.log($(this).find(".item-title")[0].innerText);
console.log($(this).find(".item-after")[0].innerText);
1 curtida
@campelo.m,
Funcionou certinho, mais uma vez obrigado =)