Ir al contenido principal

Usando la librería jQuery en proyectos web

En la siguiente entrada voy a describir cómo aprovecho las bondades de jQuery en mis aplicaciones web. Seguro que hay opciones mejores, pero yo uso esta.


En la plantilla html principal, hago las llamadas a la hoja de estilo jQuery que vaya a usar y las .js que hayamos descargado.

Por ejemplo:

<link rel="stylesheet" href="/media/css/themes_jquery/base/calendario.css" type="text/css" media="screen"/>
<script type="text/javascript" src="/media/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/media/js/jquery-ui-1.8.5.custom.min.js"></script>



Seguidamente incluyo todo el código javascript-jquery que necesitará cualquier parte de la página, permitiendo reutilizar código.
Esto es un ejemplo, más adelante explico varias funciones que no deben faltar en un proyecto:

<script type="text/javascript">
    $(function() {

        $("#tabs").tabs();
        $(".trlist").mouseover(function(){
          $(this).addClass("trsub");
        });
        $(".trlist").mouseout(function(){
          $(this).removeClass("trsub");
        });


        $("#accordion").accordion();


                       
                        (...)
    });
</script>


Ejemplo de algunos efectos necesarios en todas las webs

Ilumina la etiqueta <tr> al pasar por ella en una tabla.

Código jQuery:


$(".trlist").mouseover(function(){
          $(this).addClass("trsub");
  });
  $(".trlist").mouseout(function(){
          $(this).removeClass("trsub");
  });


El código HTML que recogerá este efecto sería:

 <table>
        <tr class="trlist"><td>...</td></tr>
 </table>

Y por ejemplo, una entrada en la hoja de estilo:

.trsub {
    background: #F8F8F8
}



Hacer aparecer una <DIV> al pulsar un link

Código jQuery:


        $(".show_panel").toggle (function (){
            $("#panel").show("blind");
        }, function (){
            $("#panel").hide("blind");
        });


El código HTML que recogerá este efecto sería:

    <a href="#" class="show_panel">Abrir DIV</a>       
    <div id="panel">Texto que aparecerá</DIV>


Código CSS:

#panel{
    display:none;
}



Mostrar el típico mensaje de confirmación

Seguro que la necesidad de levantar un mensaje de confirmación con respuestas de aceptar y cancelar se repiten en varias ocasiones a lo largo del proyecto. Para ello, y para reutilizar código, yo uso un sistema como este:

Código jQuery:

$( "#dialog" ).dialog({
            autoOpen: false,
            resizable: false,
            modal:true,
            buttons: {
                "Aceptar": function() {
                    $( this ).dialog( "close" );
                    var url =$('.confirm').get(index);
                    location.href=url;
                    return true;
                },
                "Cancelar": function() {
                    $( this ).dialog( "close" );
                    return false;
                }
            }
        });

        $( ".confirm" ).click(function() {
            $( "#dialog" ).dialog( "open" );
            index= $( ".confirm" ).index(this)
            return false;
        });

 
El HTML será distinto en cada página, pero siempre llamará a la misma función.

 <a href="?del=" class="confirm">X</a>

        <div id="dialog" title="Eliminar">
            <p>¿Desea realmente hacer esto?</p>
        </div>


Este ejemplo asigna a la variable index el índice del <tr> dentro de una tabla y lo recoge la variable url para obtener el <a href="?del...
La otra opción más simple sería recoger la url como atributo en la variable url.

var url =$('.confirm').attr("href");



Mostrar un calendario emergente




Código jQuery para que aparezca un calendario al pinchar en una caja de texto:

        $("#datepicker").datepicker({
            maxDate: '+1m +1w',
            dateFormat: 'dd-mm-yy',
            onSelect: function (dateText, inst) {
                var input= document.getElementById('
datepicker');
                input.value= dateText;
                }
            });


Código HTML:

 <input type="text" id="datepicker" name="from" />

*no probado

 

Comentarios

Entradas populares de este blog

Servir aplicación Django con Cherokee

Estos son los pasos que he seguido para servir una aplicación Django en un servidor Cherokee con el módulo WSIGI . He usado este servidor de aplicaciones porque es más rápido y libiano que Apache. En este caso, he virtualizado un Ubuntu-sever con VirtualBox , por lo que parto de una instalación "pelada" del sistema operativo. Durante la instalación de la máquina virtual, el único paquete que he instalado ha sido el ssh-server, para evitar que me instale cualquier servidor que pueda confrontar con el cherokee. Después de actualizar el sistema operativo, he instalado los siguientes paquetes. Es importante señalar que estos comandos instalará los paquetes con la última release, lo que puede provocar incompatibilidades con la aplicación desarrollada. De ser necesaria alguna versión concreta, será necesario descargarlo e instalarlo a mano con las instrucciones del programador. Django: https://www.djangoproject.com/download/ Cherokee: http://www.cherokee-project.com/d...

Configurando XBEE

Ambos Xbee se configura en modo end point o nodo, es decir, ninguno es concentrador, lo que permite una comunicación bidireccional y sin esperas. Comandos AT: ATID -> Corresponde al PanId o el número que engloba todos los dispositivos XBee de una misma red. ATMY -> Es el valor individual para cada nodo. ATDL -> Indica el número de nodo destino. ATCE -> Tiene valor 1 o 0, dependiendo de si es concentrador o no. ATRE -> Restaura valores de fábrica. ATWR -> Almacena los valores de configuración en la memoria no volátil. ATCN -> Sale del modo configuración. ATBD -> Tasa de transmisión, por defecto 3= 9600. ATAP -> API Mode. (Enable: 1, Disable: 0) Ejecutar en un terminal la aplicación GtkTerm y configurar las siguientes opciones como muestra la figura seleccionando el ttyUSBx que corresponda: Una vez configurado, introducir +++ y obtener OK de parte del XBee, configurar el Xbee con los siguientes parámetros: ATID ATMY ATDH ATDL ATCE XB...

jquery

Selectores: $("#myDiv")-> Id $("div")-> etiqueta (div, span, h1) $(".myClass")-> mi class $("*")-> cualquier etiqueta $("div,span,p.myClass")-> otra posibildad   $("div: has (p)") --> contiene una etiquta dentro de otra. $("div: contains ('John')")--> etiqueta que contiene la palabra dada $("td: empty ") --> etiqueta vacía $("td: parent ") --> eiqueta padre, es decir los primeros td de cada tr Filtros Básicos: $("tr: first ") --> Encuentra el primer elemento $("tr: last ") --> Encuentra el último elemento $("tr: even ") --> uno sí-otro no $("tr: odd ") --> y viceversa $("tr: eq(índice) ") --> encuentra el índice $("tr: gt(índice) ") --> a contar a partir del índice $("tr: lt(índice) ") --> a contar hasta el índice Atributos de selección $("div[id]"). on...