Software Archive
Read-only legacy content

Como capturar um atributo - Listview

Rafael_M_2
Beginner
473 Views

Bom dia!

  Eu utilizo bootstrap e não estou conseguindo capturar um atributo de uma litsview que estou criando. Onde estou fazendo errado conforme meu código abaixo:

                    $.each(registros, function(c, clientes){
                        // Montar linha do relatório (item)...
                        var item =  '<ul class="list-group" >' +
                                        '<li class="list-group-item">' +
                                            '<span class="badge">' + clientes.codigo + '</span>' +
                                            '<h3>' + clientes.razao_social + '</h3>' +
                                            '<p><h4>' + clientes.fantasia + '</h4></p>' +
                                            '<p><h4>' + clientes.cnpj_cpf + '</h4></p>' +
                                            '<data-codigo="'+clientes.codigo+'">' +
                                        '</li>' +
                                    '<ul>';
                        alert("atributo : " + $(item).attr('data-codigo'));     // sempre está retornando nul

                        $("#lvClientes").append(item);                        
                        }
  

O retorno sempre é nulo, já testei de várias formas e não consegui êxito.                  );

Se alguém puder me ajudar ficaria grato.

Rafael Moroni

 

0 Kudos
6 Replies
Diego_Calp
Valued Contributor I
473 Views

Hi Rafael,
You are trying to get the attribute with jquery from a javascript variable:

 $(item).attr('data-codigo')

item is not a DOM element.

Is not clear to me your intention, at the place of the alert() you can use the value of clientes.codigo

Regards

Diego

0 Kudos
Elroy_A_Intel
Employee
473 Views

data-codigo is not an atrribute but instead a DOM element. In order to access this element, use this line $(li > data-codigo).

You find more information on jQuery find and get methods at http://www.w3schools.com/jquery/traversing_find.asp.

0 Kudos
Rafael_M_2
Beginner
473 Views

Olá,

obrigado pelas respostas. Irei verificar onde está o problema.

Abraços

 

 

0 Kudos
Rafael_M_2
Beginner
473 Views

Olá,

na verdade o que eu preciso é do seguinte:

    /* listitem  #liComClientes */
    $(document).on("click", "#liComClientes", 
        function(evt){
            // Selecionar todos os registros de clientes...
            dao.selectAll("clientes", function(registros){
                    // Limpar relatório (lvClientes)...
                    $("#lvClientes").empty();
                    // Percorrer CADA registro encontrado...
                    $.each(registros, 
                        function(c, clientes){
                        // Montar linha do relatório (item)...
                        var item =  '<ul class="list-group" >' +
                                        '<li class="list-group-item">' +
                                            '<span class="badge">' + clientes.codigo + '</span>' +
                                            '<h3>' + clientes.razao_social + '</h3>' +
                                            '<p><h4>' + clientes.fantasia + '</h4></p>' +
                                            '<p><h4>' + clientes.cnpj_cpf + '</h4></p>' +
                                            '<data-codigo="'+clientes.codigo+'">' +
                                        '</li>' +
                                    '<ul>';
                        $("#lvClientes").append(item);                        
                    );
                    // Ir para tela de relatório...
                    activate_page("#pgComercialClientes"); 
                }
            );
        }
    );
    
    /* listitem #lvClienteso > li */
    $(document).on("click", "#lvClientes", 
        function(evt){
            // Capturar o código do cliente clicado...
            var codigo = $(this).attr("data-codigo");
            // Montar SQL pra buscar dados do cliente no banco de dados..
            var sql = "select * from clientes where codigo = " + codigo;
            // Buscando os dados na tabela...
            dao.query(sql, function(registros){
                // Validar registro do cliente...
                if(registros.rows.length>0){
                    // Capturando dados retornado...
                    var clientes = registros.rows.item(0);
                    // Carregar detalhes do cliente (página #pgComCliDetalhes)...
                    $("#detalhesCliente").parent().find(".formGroupHead").text(clientes.razao_social.toUpperCase());
                    $("#clienteFantasia").text(clientes.fantasia);
                    $("#clienteCNPJCPF").text(clientes.cnpj_cpf);

                    activate_page("#pgComCliDetalhe"); 
                }else{
                    navigator.notification.alert("Nenhum registro encontrado.","INFORMAÇÃO",null,"OK");
                }
            
            });
    });

quando eu clico na ListView o resultado da linha 34 é null

var codigo = $(this).attr("data-codigo");

Me desculpem, sou iniciante em HTML/Javascript, mas eu não consegui resolver este meu problema.

Abraços,

Rafael Moroni

 

0 Kudos
Diego_Calp
Valued Contributor I
473 Views

Hi Rafael,

Seems that jquery doesn't get data-codigo as <li> item attribute, try modifying line 13 like this:

'<li class="list-group-item" data-codigo="'+clientes.codigo+'">'

And remove line 18.

Regards,

Diego

 

0 Kudos
Rafael_M_2
Beginner
473 Views

Oi Diego,

esta tentativa eu já tinha realizado, não funcionou.

Rafael

0 Kudos
Reply