Foros del Web » Programando para Internet » Jquery »

Problemas al tratar con un div creado con jQuery

Estas en el tema de Problemas al tratar con un div creado con jQuery en el foro de Jquery en Foros del Web. Hola! Estoy haciendo un ejercicio probando cosas con jQuery y me he atascado.. El ejercicio que estoy haciendo es algo así como: Hay una imagen ...
  #1 (permalink)  
Antiguo 08/02/2011, 13:08
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 9 meses
Puntos: 2
Problemas al tratar con un div creado con jQuery

Hola! Estoy haciendo un ejercicio probando cosas con jQuery y me he atascado..

El ejercicio que estoy haciendo es algo así como:
Hay una imagen (producto) y al hacer clic añade una fila a una tabla con información, ejemplo simple del típico carro de compras. Pero hay un botón que convierte las imágenes en texto (oculta la imagen y crea un div con el texto del producto) y la inversa.

Casi todo funciona correctamente.
*Al hacer clic en el botón oculta las imagenes y crea un div o muestra las imagenes y borra el div.
*Al hacer clic en la imagen se inserta la fila en la tabla y se actualiza la info. (id: platano01)
*Al hacer clic en el texto de un div inserta la fila o actualiza del mismo (id: platano02)
*Pero al hacer clic en el texto del div creado con el botón jQuery no inserta (id: platano03)

El problema que tengo en breves palabras es:
Con jQuery he creado un div (<div id='platano03'> platano03 - div añadido con jQuery</div>) y quiero que al hacer clic en el se inserte una fila, del mismo modo que lo hace la imagen y otro div (creado en el html).

¿Alguna idea porque no puedo trabajar con el nuevo div que crea jQuery?

Código HTML:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <title>Botiga - Pràctica jQuery</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <script type="text/javascript" src="Jquery1-5.js"></script>
        <script type="text/javascript" >
            $(function(){
                // Cada vez que se hace clic alterna 2 funciones
                $('#boto').toggle(
                    function(){
                        $("img[id]").hide(); // oculta la imagen
                        
                        /* Genera un nuevo div con id platano03 debajo de la imagen.
                         * Hay una función que afecta a este nuevo div03 al hacer clic encima
                         * ¡¡¡ PERO NO FUNCIONA !!! No puedo tratar este div fuera de la función toggle
                         */
                        $("<div id='platano03'> platano03 - div añadido con jQuery</div>").insertAfter("img[id='platano01']");
                    },
                    function(){
                        $("img[id]").show(); // muestra la imagen
                        $("div[id!=platano02]").remove(); //elimina divs menos platano02
                    }
                );

                // CUANDO SE HACE CLIC SOBRE CUALQUIER COSA CON ESTOS ID AÑADE AL CARRO
                $("[id='platano01'],[id='platano02'],[id='platano03']").bind('click',function(){
                        if($("td[id='platanoCANT']").length <= 0){
                            $("<tr><td><img width='60px' height='60px' alt='platano'  src='imatges/platano.png' id='platano'/></td>\n\
                            <td>Platano </td><td id='platanoPRECIO'> 2.50 €</td><td id='platanoCANT'> 1 </td><td id='platanoTOTAL'> 2.50€ </td></tr>").appendTo("#cistellaDIV");
                        }else{
                            var platanoCANT = parseInt($("td[id='platanoCANT']").html())+1; //Obtener cantidad producto
                            var platanoTOTAL = parseFloat($("td[id='platanoPRECIO']").html()) * platanoCANT ;
                            $("td[id='platanoCANT']").html(platanoCANT);
                            $("td[id='platanoTOTAL']").html(platanoTOTAL + "€");
                        }
                });
            });
        </script>
    </head>
    <body>
        <!-- FUNCIONA CAMBIA DE IMAGEN A TEXTO -->
        <input id="boto" type="submit" value="texto / imagenes" /><br />
        <!-- FUNCIONA AL HACER CLIC INSERTA LA FILA EN LA TABLA -->
        <img alt="platano01" id="platano01" title="platano01" src="imatges/platano.png"/>
        <!-- FUNCIONA AL HACER CLIC INSERTA LA FILA EN LA TABLA -->
        <div id="platano02"><b>platano02 - div añadido en el html</b></div>

        <hr align="left" width="70%"><br/>
            
        <div id="cistellaDIV2" > cistellaDIV</div>

        <table border="1">
            <thead>
                <tr>
                    <th>Imagen</th>
                    <th>Nombre</th>
                    <th>Precio</th>
                    <th>Unidades</th>
                    <th>Total</th>
                </tr>
            </thead>
            <tbody  id="cistellaDIV">
            </tbody>
        </table>

    </body>
</html> 
  #2 (permalink)  
Antiguo 08/02/2011, 15:28
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Problemas al tratar con un div creado con jQuery

Debes usar el metodo live para que los nuevos elementos creados tengan las funciones definidas en el load de la pagina.
__________________
My path is lit by my own fire, I only go where I desire
  #3 (permalink)  
Antiguo 09/02/2011, 02:43
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Problemas al tratar con un div creado con jQuery

muchas gracias! No la conocía y me ha funcionado perfecto!
  #4 (permalink)  
Antiguo 09/02/2011, 03:57
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 9 meses
Puntos: 2
Problemas con tablesorter y una fila generada con jQuery

Hola de nuevo ^^' para dar por finalizado el ejercicio quiero que las columnas de la tabla se orden al hacer clic en sus respectivas cabeceras.

Estoy probando el plugin de tablesorter y el contenido que inserto manualmente en el html lo ordena perfectamente.

Pero las filas (tr) insertadas con el método que hice en jQuery (código arriba) no las ordena...

Por ejemplo tengo 2 filas creadas previamente en el html y una generada al hacer clic en la foto/texto. Al hacer click en las cabeceras de las columnas ordena todo menos la generada que se mantiene quieta arriba.

Imagino que se trata de algo parecido al caso anterior, pero no consigo aplicar la misma solución. He mirado el fichero jquery.tablesorter.js, buscando donde se hace click y encontré esto:

Código HTML:
 $headers.click(



                    function (e) {

                        var totalRows = ($this[0].tBodies[0] && $this[0].tBodies[0].rows.length) || 0;

                        if (!this.sortDisabled && totalRows > 0) {
. . .
He probado de modificarlo para que trate las nuevas filas generadas al momento pero no hay forma..

¿Alguna idea o alternativa para poder ordenar estas filas también con jQuery?

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:20.