Archive for the ‘javascript’ Category

jQuery: manejo de checkbox

Monday, July 19th, 2010

Como comentan en la vía, la documentación de jQuery en la web oficial no siempre es tan completa como debería. Así que ahí van algunos de trozos de código que puede ayudar al maneja de los checkboxes:

Seleccionar/deseleccionar un checkbox:

// Seleccionar un checkbox
$('input[name=acheckbox]').attr('checked', true);

// Deseleccionar un checkbox
$('input[name=acheckbox]').attr('checked', false);

Seleccionar/deseleccionar todos los checkbox:

// Seleccionar todos los checkboxes
$("input:checkbox").attr('checked', true);

// Deseleccionar todos los checkboxes
$("input:checkbox").attr('checked', false);

Comprobar si un checkbox está seleccionado:
(more…)


jQuery: mejorar rendimiento en selectores

Friday, July 2nd, 2010

El siguiente código es correcto:

$("div#elem").hide();
$("div#elem").css("width","200");
$("div#elem").show();

Pero presenta un problema: cada vez que se especifica un selector, jQuery recorre todo el DOM en busca de los elementos correspondientes.

Tenemos dos posibles soluciones para mejorar el rendimiento. La primera es “encadenar” las llamadas:

$("div#elem").hide().css("width","200").show();

La segunda es guardar el objeto devuelto por jQuery en una variable:

var myElement = $("div#elem");
myElement.hide();
myElement.css("width","200");
myElement.show();

Esto también es aplicable al objeto “this”. Por ejemplo, para este loop:

$("div").each(function(i) {
   $(this).addClass("myClass");
   if($(this).hasClass("newClass") {
      $(this).addClass("anotherClass");
   }
});

Podríamos implementar algo como esto:

$("div").each(function(i) {
   var $this = $(this);
   $this.addClass("myClass");
   if($this.hasClass("newClass") {
      $this.addClass("anotherClass");
   }
});

Nota: la variable ha sido nombrada $this, en lugar de this, porque esta última es una palabra reservada.

Vía | http://www.thewebsqueeze.com


jQuery: navegador con soporte WebKit

Friday, May 28th, 2010

jQuery nos ofrece una alternativa sencilla, a la par que elegante, para la comprobación mediante código JavaScript del soporte de WebKit del navegador.

Para ello podemos utilizar el objeto jQuery.browser. Este objeto contiene los siguientes flags:

  • webkit (a partir de jQuery 1.4)
  • safari (obsoleto)
  • opera
  • msie
  • mozilla

De manera que para comprobar si el navegador soporta WebKit, podemos usar este código:

if($.browser.webkit) {
// do something
}

De la misma manera se puede comprobar si el navegador es uno de los listados más arriba. Además, el objeto tiene un miembro “version” que permite añadir/filtrar código dependiendo del navegador y la versión del mismo. Ejemplo:

if($.browser.msie) {
   alert($.browser.version);
}

Ojo que, tal como indican en la web de la API de jQuery el uso de este objeto está “deprecado”. En su lugar se debería usar jQuery.support, para efectuar comprobaciones más complejas, individuales para cada funcionalidad que se desea chequear.  Con esto se puede activa/desactivar features de la web individualmente.

Sin embargo, aún teniendo en cuenta los riegos, el uso de jQuery.browser es mucho más sencillo y más rápido de implementar.


Javascript: comprobar si navegador soporta WebKit

Thursday, May 27th, 2010

En realidad, el código para esta comprobación es muy similar al utilizado para chequear si el navegador pertenece a un dispositivo móvil (p.e. iPhone o Android), lo cual podemos aprovechar para redirigirlo a un sitio “mobile-friendly” o aplicar un theme más adecuado para la visualización en pantallas reducidas.

En el caso del soporte para WebKit, podemos aplicar un comportamiento diferente si el navegador no soporta, por ejemplo, las transiciones, etc.

Código javascript:

//Initialize our user agent string to lower case.
var uagent = navigator.userAgent.toLowerCase();

var webkitSupport= "webkit";
//**************************
// Detects if the current browser supports WebKit.
function DetectWebKit() {
   if (uagent.search(webkitSupport) > -1)
      return true;
   else
      return false;
}

En el caso de aplicaciones generadas con Dashcode, esta comprobación puede ser suficiente.

Por ejemplo, la versión para móviles de este blog:

http://blog.ilikeblues.com/iphone

se comporta correctamente en iPhone, Android, Chrome, etc.


Crear elementos DOM – HTML dinámicamente usando jQuery

Monday, May 10th, 2010

Echando un vistazo a este artículo sobre cómo añadir un objeto iframe dinámicamente, veo que la técnica es válida para cualquier objeto HTML que queramos añadir al DOM.

El código para crear un elemento iframe sería:


$('<iframe />');

También podemos crearlo con atributos:


$('<iframe id="myFrame" name="myFrame">');

Para terminar, podemos insertarlo en el DOM:


$('<iframe id="myFrame" name="myFrame">')
   .appendTo('body');

El contenido del iframe se fija a través de su atributo “source”:

$('<iframe />')
   .attr('src', 'http://www.google.com');

En los comentarios del mismo artículo, alguien sugiere, además, esta otra manera de hacerlo:


$('<iframe />', {
   name: 'myFrame',
   id:   'myFrame',
   ...
}).appendTo('body');

Personalmente, prefiero la segunda…

Vía | http://www.itrickz.co.cc


Usar jQuery para comprobar si existe un elemento

Friday, May 7th, 2010

Tal como dice la especificación, la propiedad “length” en  jQuery devuelve la cantidad de objetos que responden al selector utilizado.

De manera que podemos utilizar el código:

$("#id").length

para determinar si existe algún elemento con el identificador “id” en el DOM.

Ejemplo de código:

if ($("#id").length) {
   $("#id").text("Hello!");
}

Vía | http://eisabainyo.net


Cómo realizar una petición AJAX usando jQuery

Thursday, May 6th, 2010

Podemos utilizar jQuery para realizar peticiones AJAX a un servidor y actualizar el contenido web dinámicamente.

Este es el código que necesitamos para hacer un GET:

$.get("profile.php", { username: "rob" },
   function(response){
      // put the HTML content of profile.php into a div with id = "profile_page"
      $("#profile_page").html(response);
   }
);

Este código realiza una petición de tipo “GET” al mismo servidor en que se encuentra la página cargada, con un único parámetro “uername”, y utiliza el HTML devuelto para construir el contenido de un elemento cuyo identificador es “profile_page”.

De la misma manera podemos hacer una petición “POST”:

$.post("login.php", { username: "rob", password: "secret" },
   function(response){
      if (response == "good"){
         alert("You have logged in successfully.");
      }else{
         alert("Invalid username/password");
      }
   }
);

En este caso, la respuesta será “good” si el login se ejecutó correctamente.

Vía | http://lovehateubuntu.blogspot.com


Slider con CSS3 puro y funcionalidad de Back Button

Wednesday, April 28th, 2010

Neil Grosskopf muestra en su blog una solución para crear un slider típico de jQuery usando CSS3 puro.

Pero es que además, su solución evita el problema del “Back Button” en aplicaciones que utilizan jQuery, consistente en que mostrar una parte “oculta” usando jQuery no modifica el historial de navegación, de manera que si el usuario presiona el botón “atrás”, no se vuelve a la situación anterior, sino que el navegador pasa a otra localización.

En fin, veamos un ejemplo (aquí una demostración online, más sencilla que la de la entrada original de Neil).

Primero creamos la lista con los elementos, en este caso 3:

<div id="content">
   <ul>
      <li>
         Text 1
      </li>
      <li>
         Text 2
      </li>
      <li>
         Text 3
      </li>
   </ul>
</div>

Aplicamos las siguientes reglas CSS:

#content, ul, li {
   height: 400px;
   padding: 10px;
}

#content, li { position: relative; width: 500px; }

#content {
   overflow: hidden;
   padding: 10px;

   float:left;
}

ul {
   list-style-type: none;
   position: absolute;
   left: 0px;
   top: 0px;
   width: 500px;
   height: 2000px;
}

Con este CSS conseguimos que, de los tres elementos li apilados en vertical, sólo se vea uno a un tiempo. Inicialmente el primero, de manera que ahora tenemos que proporcionar el mecanismo para desplazar el elemento ul las cantidades suficientes para ver los elementos 2 y 3, respectivamente.

Empezamos colocando los “anchors” al principio de la página. Serán divs sin contenido, ya que su único propósito es que sirvan como selectores CSS:

<div><div id="p1"></div>
<div><div id="p2"></div>
<div><div id="p3"></div>

Y ahora añadimos las reglas CSS, basadas en esos anchors para desplazar el elemento ul:

#p1:target ul { top: 0px; }
#p2:target ul { top: -420px; }
#p3:target ul { top: -840px; }

Listo. Cuando nuestro navegador apunte al anchor #p1 (o simplemente no apunte a ninguno), veremos el primer elemento. Cuando apunte al #p2, al segundo, y así sucesivamente.

Por último, si queremos dar sensación de fluidez al cambio de un elemento a otro, añadimos la siguiente regla CSS:

ul { -webkit-transition: top .3s linear; }

Pero ojo, esto último sólo funciona para navegadores con soporte WebKit.

Eso es todo. En este link podéis encontrar una demostración (a la que se ha añadido unos enlaces muy simples para permitir pasar de un elemento a otro sin necesidad de modificar la URL) y en este otro un zip con el código.

Via | http://www.nealgrosskopf.com


flickrPlaces – Chrome Extension v1.6

Wednesday, April 21st, 2010

Subida a los servidores de google la última versión (1.6) de la extensión para Google Chrome flickrPlaces.

La nueva versión, incluye la posibilidad de configurar si la foto clicada será mostrada en una nueva pestaña o no.

Gracias a @fjcanales por la sugerencia.

[Nota: para actualizar una extensión ya instalada, abrir la pestaña de extensiones, expandir las opciones para desarrolladores (haciendo click en "Modo desarrollador") y pulsar el botón "Actualizar extensiones ahora".]


flickrPlaces – Chrome Extension v1.5

Monday, April 12th, 2010

Acabo de subir a los servidores de google la última versión (1.5) de la extensión para Google Chrome flickrPlaces.

La nueva versión, a petición popular ;-) , incluye persistencia de la última búsqueda realizada.

De manera que, al hacer click en el icono, mostrará el mismo contenido de antes de cerrarla por última vez.

[Nota: para actualizar una extensión ya instalada, abrir la pestaña de extensiones, expandir las opciones para desarrolladores (haciendo click en "Modo desarrollador") y pulsar el botón "Actualizar extensiones ahora".]


Get Adobe Flash playerPlugin by wpburn.com wordpress themes