JQuery - obtener el id de un boton creado dinamicamente

 
Vista:
Imágen de perfil de cristian

obtener el id de un boton creado dinamicamente

Publicado por cristian (12 intervenciones) el 29/03/2017 19:28:41
Buenas
tengo creando varias <tr> dinamicamente
1
2
3
4
5
6
7
8
var html = "<tr class='elementosprodtr' id='elem-"+resp2.name.id_elementos_salida+"'>"+
                                        "<td>"+resp2.name.nombre+"</td>"+
                                        "<td><input type='text' class='form-control'  readonly   id='codi-"+resp2.name.id_elementos_salida+"'  value='"+resp2.name.codigo+"'></td>"+
                                        "<td><input type='text' class='form-control'  id='cantidad-"+resp2.name.id_elementos_salida+"' placeholder='cantidad' value='"+resp2.name.cantidad+"'></td>"+
                                        "<td>"+resp2.name.medida+"</td>"+
                                        "<td><a class='boton glyphicon glyphicon-trash btn btn-danger' id='eliminarprod-"+resp2.name.id_elementos_salida+"' ></a></td>"+
                                        "</tr>";
                                        $("#listaproductos").append(html);
dentro hay un boton con un id variable ,es decir que va a cambiar cada vez que se cree uno nuevo

quiero que al dar en el boton se elimine ese registro la unica forma e llamar el evento es ponerle una clase llamada boton ,pero al llamarla me elimina todas por que la clase es la misma para todas valga la redundancia

asi queda el jquery

1
2
3
4
5
$("#listaproductos").on('click','a.boton', function() {
     $('.elementosprodtr').each(function(indice, elemento) {
 
             var id = $(this).attr("id").split("-")[1];
            alert("eliminado"id);
pero pone todos los id los registro no al que le di click
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 142
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

obtener el id de un boton creado dinamicamente

Publicado por Horroroso (65 intervenciones) el 06/04/2017 16:05:13
Hola, te propongo que utilices $(this):
1
2
3
$("#listaproductos").on('click','a.boton', function() {
    $(this).parent().parent().remove();
}

y ni siquiera hay necesidad de que le pongas un id, ni al boton ni al tr..

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de cristian

obtener el id de un boton creado dinamicamente

Publicado por cristian (12 intervenciones) el 06/04/2017 23:15:20
con el codigo que me acabas de dar me sirve mucho para quitar con le de eliminar,pero el problema nos es ese,el problema es q necesito que cuando de click en el boton eliminar me elimine justo al que le di click
,pero me esta cogiendo tods los de la lista.

creo que esta no me sirve
1
$("#listaproductos").on('click','a.boton', function() {

por que esta cogiendo a todos los botones con esa clase.como hago que solo detecte al que le de click?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 39
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

obtener el id de un boton creado dinamicamente

Publicado por Alejandro (14 intervenciones) el 07/04/2017 01:23:14
Hola, probaste con el objeto event.
1
2
3
$("#listaproductos").on('click','a.boton', function(event) {
    event.target.parent().parent().remove();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 142
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

obtener el id de un boton creado dinamicamente

Publicado por Horroroso (65 intervenciones) el 07/04/2017 16:32:21
Hola,

no tiene porque eliminarte todos, ya lo probaste?

solo utiliza:
1
2
3
$("#listaproductos").on('click','a.boton', function() {
    $(this).parent().parent().remove();
}
y se va a eliminar unicamente el <tr> donde le diste click al boton. No se elimina ningun otro.
Yo lo probe con el siguiente codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$("#listaproductos").on('click','a.boton', function() {
    $(this).parent().parent().remove();
});
 
for (var i=0; i < 10;i++){
    var resp2 = new Object();
    var name = new Object();
    resp2.name = name;
    resp2.name.nombre = "producto " + i;
    resp2.name.id_elementos_salida = "idElementosSalida"
    resp2.name.codigo = "codigo"
    resp2.name.cantidad = 100*i
    resp2.name.medida = "kg"
 
    var html = "<tr class='elementosprodtr' id='elem-" + resp2.name.id_elementos_salida + "'>" +
        "<td>" + resp2.name.nombre + "</td>" +
        "<td><input type='text' class='form-control'  readonly   id='codi-" + resp2.name.id_elementos_salida + "'  value='" + resp2.name.codigo + "'></td>" +
        "<td><input type='text' class='form-control'  id='cantidad-" + resp2.name.id_elementos_salida + "' placeholder='cantidad' value='" + resp2.name.cantidad + "'></td>" +
        "<td>" + resp2.name.medida + "</td>" +
        "<td><a class='boton glyphicon glyphicon-trash btn btn-danger' id='eliminarprod-" + resp2.name.id_elementos_salida + "' ></a></td>" +
        "</tr>";
    $("#listaproductos").append(html);
 
}
y como ves, me crea 10 campos ficticios. cuando le doy click al boton, me desaparece la fila que le di clic. no mas.

revisa tu codigo si hace algo diferente, o ponlo completo para poder verificarlo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de cristian

obtener el id de un boton creado dinamicamente

Publicado por cristian (12 intervenciones) el 07/04/2017 22:39:21
dejano su codigo asi como esta si me lo quita de la vista uno por uno,pero no solo quiero que me quite la vista si no que tambien me elimine el registro con ese id en la base de datos,cuando le agrego el codigo se eliminan todos,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$("#listaproductos").on('click','a.boton', function() {
     $('.elementosprodtr').each(function(indice, elemento) {
            $(this).parent().parent().remove();
             var id = $(this).attr("id").split("-")[1];
 
            {
       $.get(
                "index.php?controller=master&action=delete_elementos_salida",
        {
 
                            id:id
 
                        },
                function (resp) {
 
 
                    if (resp.success)
                    {
 
                  (alertify.success('elementos eliminados'));
 
 
 
                    } else
                    {
 
                       (alertify.error('No se pudo eliminar'));
                    }
 
                },
               "json"
          );
  }
 });
});

envio por get el id que quiero eliminar,pero me envia todos y elimina todos los registros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 142
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

obtener el id de un boton creado dinamicamente

Publicado por Horroroso (65 intervenciones) el 10/04/2017 16:41:26
Es que insistes en utilizar el each...

no tienes porque usarlo.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$("#listaproductos").on('click','a.boton', function() {
            $(this).parent().parent().remove();
             var id = $(this).attr("id").split("-")[1];
 
      $.get(
                "index.php?controller=master&action=delete_elementos_salida",
                  {
                            id:id
                        },
                function (resp) {
                     if (resp.success)
                    {
                             (alertify.success('elementos eliminados'));
                     } else
                    {
                        (alertify.error('No se pudo eliminar'));
                    }
                 },
               "json"
          );
});

no uses el each, pues significa que para cada uno (no solo al que le diste click) haga el mismo procedimiento.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de cristian

obtener el id de un boton creado dinamicamente

Publicado por cristian (12 intervenciones) el 10/04/2017 19:14:06
Muchisimas gracias,tenias toda la razon era ese each,Gracias por tomarte el tiempo para ayudarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar