Tutorial J Query
Tutorial J Query
web: “La librería JavaScript para escribir menos y hacer más”. Ampliando algo más esta
una aplicación web en algo mucho más divertido, rápido y sencillo, facilitando la interacción
con los elementos del árbol de documento, el manejo de eventos, el uso de animaciones,
etc.
Con algo más de 4 años de vida, jQuery se ha convertido en la librería JavaScript más
utilizada actualmente, y es que, además, es gratuita, de código abierto (bajo licencia MIT y
GPL v2) e increíblemente ligera. Entre sus usuarios podemos encontrar a Google, Microsoft,
Para poder utilizar esta librería lo primero que tendremos que hacer será incluir su código en
nuestro proyecto. Podemos descargar el script desde su página web, subirlo a nuestro
1. <script type="text/javascript" src="jquery.js"></script>
1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/
jquery/1.4.2/jquery.min.js"></script>
el de Microsoft:
1. <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/
jquery-1.4.2.min.js"></script>
1. <script type="text/javascript" src="http://code.jquery.com/jquery-
1.4.2.min.js"></script>
también toma conceptos del paradigma funcional, y las funciones no son más que otro tipo
intención de esta decisión de diseño es la de evitar llenar el espacio de nombres global con
Si queremos escribir menos y que nuestros archivos sean más pequeños, y si no utilizamos
ninguna otra librería que pueda causar algún conflicto con este símbolo, también podemos
SELECTORES JQUERY
El primer paso a la hora de trabajar con jQuery es seleccionar los elementos del árbol de
documento sobre los que queremos trabajar. Para ello se utiliza la función jQuery, pasando
como argumento a la función una cadena con un selector, la mayoría de los cuales utilizan
una sintaxis similar a la de CSS 3 (ver Tutorial rápido de CSS). El engine que utiliza jQuery
aislada.
Selectores básicos
1. jquery("*")
Selector de tipo o etiqueta: selecciona todos los elementos con el tipo de etiqueta indicado
(CSS 1)
1. jQuery("div")
Selector de clase: selecciona todos los elementos con la clase indicada (atributo class) (CSS
1)
1. jQuery("div.entrada")
(CSS 1)
1. jQuery("div#cabecera")
1. jquery("p,div,a")
Selectores de atributos
1. jquery("a[rel]") $(“div[name=’nombrecont’]”)
También se puede seleccionar aquellos que tengan un cierto valor para un atributo (CSS 2)
1. jquery("a[rel='nofollow']") $(“a[href]”)
1. jQuery("a[rel!='nofollow']")
1. $("a[href^='http://mundogeek.net/']")
Los que terminan con una cierta cadena (CSS 3)
1. jquery("a[href$='.com']")
1. jquery("a[href*='geek']")
1. jquery("a[rel='nofollow'][href]")
Selectores de widgets
1. jquery(":button")
1. jquery(":checkbox")
Pseudo clase archivo: selecciona todos los widgets de tipo archivo (jQuery)
1. jquery(":file")
1. jquery(":header")
Pseudo clase input: selecciona todos los widgets de tipo input (jQuery)
1. jquery(":input")
1. jquery(":password")
1. jquery(":radio")
1. jquery(":reset")
1. jquery(":select")
1. jquery(":submit")
1. jquery(":text")
Pseudo clase marcado: selecciona todos los radiobuttons y checkboxes marcados (CSS 3)
Pseudo clase activo: selecciona todos los elementos que estén activos (CSS 3)
1. jquery("input:enabled")
Pseudo clase inactivo: selecciona todos los elementos que no estén activos (CSS 3)
1. jquery("input:disabled")
1. jquery(":hidden")
1. jquery(":visible")
Selectores de jerarquía
1. jquery("div.entrada h2")
Selector de hijos: selecciona elementos que sean hijos directos de otro elemento (CSS 2)
1. jquery("div.entrada > h2")
1. jquery("tr:nth-child(1)")
1. jquery("tr:first-child")
1. jquery("tr:last-child")
Pseudo clase hijo único: selecciona los elementos que sean hijos únicos de otros elementos
(CSS 3)
1. jquery("div:only-child")
Pseudo clase índice: selecciona el elemento con el índice indicado de un grupo de elementos
(jQuery)
1. jquery("td:eq(0)")
a eq(0) (jQuery)
1. jquery("td:first)")
1. jquery("td:last)")
Pseudo clase mayor que: selecciona todos los elementos con un índice mayor que el indicado
1. jquery("td:gt(0)")
Pseudo clase menor que: selecciona todos los elementos con un índice menor que el indicado
1. jquery("td:lt(3)")
Pseudo clase par: selecciona los elementos pares de un grupo de elementos (jQuery)
1. jquery("td:even")
Pseudo clase impar: selecciona los elementos impares de un grupo de elementos (jQuery)
1. jquery("td:odd")
Selector de hermanos: selecciona todos los hermanos que se encuentren precedidos de otro
elemento (CSS 3)
1. jquery("div.entrada ~ p")
Selector de próximo adyacente: similar al anterior, pero sólo selecciona el adyacente directo
(CSS 2)
1. jquery("div.entrada + p")
1. jquery("h2:parent")
Pseudo clase vacío: selecciona los elementos que no tengan ningún hijo, incluyendo texto
plano (CSS 3)
1. jquery(":empty")
Otros selectores
Pseudo clase animado: selecciona todos los elementos que están en proceso de animación en
1. jquery(":animated")
Pseudo clase contiene: selecciona todos los elementos que contengan el texto indicado,
1. jquery("div:contains('Mundo geek')")
Pseudo clase tiene: selecciona todos los elementos que contengan al menos un elemento que
1. jquery("div:has(h2)")
Pseudo clase negación: selecciona todos los elementos que no cumplan con el selector dado
(CSS 3)
1. jquery("div:not(.entrada)")
que podremos obtener uno de los elementos utilizando el operador [], como si de un array
normal se tratara
1. jQuery("div.entrada")[0]
contiene la colección
1. jQuery("div.entrada").length
Otras cosas que podemos hacer con este objeto son añadir elementos a la colección
eliminar elementos
1. jQuery("div.entrada").not("div.destacada")
filtrar elementos con un selector o basándonos en el valor devuelto por una función
1. jQuery("div.entrada").filter(":has(h2)")
2.
1. jQuery("div.entrada").has("h2")
1. jQuery("div.entrada").eq(3)
1. jQuery("div.entrada").first()
1. jQuery("div.entrada").last()
1. jQuery("div.entrada").slice(0,5);
2. jQuery("div.entrada").slice(3);
1. jQuery("div.entrada").children()
2. jQuery("div.entrada").children("p")
1. jQuery("div.entrada").contents()
1. jQuery("div.entrada").find("p")
1. jQuery("div.entrada").next()
1. jQuery("div.entrada").nextAll()
1. jQuery("div.entrada").prev()
1. jQuery("div.entrada").prevAll()
1. jQuery("div.entrada").siblings()
1. jQuery("div.entrada").parent()
1. jQuery("div.entrada").parents()
1. jQuery("div.entrada").clone()
1. jQuery("*").index("div.entrada")
1. jQuery("a#principal").attr("href", "http://mundogeek.net/")
1. jQuery("div.entrada:first").addClass("primera")
1. jQuery("div.entrada").css("border", "1px solid red")
1. jQuery("div.entrada:first").before("<strong>Destacada</strong>")
2. jQuery("div.entrada:first").prepend("<strong>Destacada</strong>")
3. jQuery("div.entrada:first").after("<strong>Destacada</strong>")
4. jQuery("div.entrada:first").append("<strong>Destacada</strong>")
1. jQuery("p").html("<strong>Sustituido</strong>")
1. jQuery("div.entrada:first").remove()
ocultar un elemento
1. jQuery("p").hide()
1. jQuery("p").show()
EVENTOS EN JQUERY
Existen distintas funciones para asignar una función que maneje un evento lanzado por un
1. alert("Has hecho clic");
2. });
1. jQuery("#formulario").submit(function() {
2.
3. alert("Enviando");
4. });
1. jQuery("p:first").dblclick(function () {
2. alert("Has hecho doble clic");
3. });
1. jQuery("p:first").hover(function () {
2. jQuery(this).css("border", "1px solid red");
3. });
1. jQuery("p:first").mouseenter(function () {
2. jQuery(this).css("border", "1px solid red");
3. });
1. jQuery("p:first").mouseenter(function () {
2. jQuery(this).css("border", "1px solid red");
3. });
4.
5. jQuery("p:first").mouseout(function () {
6. jQuery(this).css("border", "0");
7. });
1. jQuery(":text#nombre").change(function () {
2. alert("Cambiado");
3. });
1. jQuery(window).load(function () {
2. alert("Página cargada");
3. });
evento ready, cuando se termina de cargar el DOM, para no tener que esperar a cargar las
imágenes, por ejemplo, de forma que el usuario pueda utilizar nuestra funcionalidad
1. jQuery(document).ready(function () {
2. alert("DOM cargado");
3. });
esto último, al ser esto algo muy común, se puede resumir pasando una función a la
función jQuery, directamente:
1. jQuery(function () {
2. alert("DOM cargado");
3. });
1. jQuery(function () {
2. jQuery("p").hide();
3. jQuery("p").delay(200).fadeIn();
4. });
más claramente el efecto. A esta función se le puede pasar un valor numérico con el número
1. jQuery(":button").click(function () {
2. jQuery("p").fadeOut();
3. });
1. jQuery(":button").click(function () {
2. jQuery("p").fadeTo("slow", 0.5);
3. });
mostrar los elementos con una animación de deslizamiento de arriba a abajo:
1. jQuery(function () {
2. jQuery("p").hide().delay(200).slideDown();
3. });
1. jQuery(function () {
2. jQuery("p").delay(200).slideUp();
3. });
1. jQuery(":button").click(function () {
2. jQuery("p").delay(200).slideToggle();
3. });
Por último, para cualquier otro tipo de animación con propiedades CSS cuyos valores sean
numéricos, utilizaríamos:
1. jQuery(":button").click(function () {
2. jQuery("p").animate({opacity:0.50,width:100}, 'slow');
3. });
JQUERY Y AJAX
La forma más sencilla de enviar una petición HTTP de forma asíncrona y mostrar el resultado
a añadir la respuesta, y se le pasa como argumento una cadena con el archivo a cargar. Esta
cadena puede contener también un selector con el que seleccionar qué elementos queremos
mostrar de la respuesta.
1. jQuery(":button").click(function () {
2. $("#citas").load("citas.html li");
3. });
también se pueden enviar parámetros al documento (se utiliza GET a menos que los datos se
1. jQuery(":button#login").click(function () {
2. $("#mensaje").load("login.php", {nombre: "zootropo", pass: "contraseña"});
3. });
1. jQuery(":button#login").click(function () {
2. jQuery("#mensaje").load("login.php", {nombre: "zootropo", pass: "contraseña"
}, function(responseText, textStatus, XMLHttpRequest) {
3. alert("cargado");
4. });
5. });
devolverá unos ciertos datos con los que nosotros mismos tendremos que trabajar para
1. jQuery.get("login.php", {nombre: "zootropo", pass:"contraseña"},
2. function(data, textStatus, XMLHttpRequest){
3. jQuery("#mensaje").html("Han devuelto: " + data);
4. });
5.
6. jQuery.post("login.php", {nombre: "zootropo", pass:"contraseña"},
7. function(data, textStatus, XMLHttpRequest){
8. jQuery("#mensaje").html("Han devuelto: " + data);
9. });
Si la respuesta del servidor va a estar en formato JSON (JavaScript Object Notation), muy
función de callback que ejecutar cuando se termine con la petición. Este método se
la función de callback.
1. $.getJSON('tareas.php', function(data, textStatus){
2. $.each(data, function(i, tarea){
3. $("<li></li>").html(tarea.nombre + " - " + tarea.hora).appendTo
("ul#tareas");
4. });
5. });
1. <?php
2. header('Content-type: text/javascript');
3.
4. $bbdd = new mysqli('servidor.com', 'usuario', 'pass', 'tareas');
5.
6. $query = 'SELECT * FROM tareas';
7. $tareas = array();
8. if($resultado = $bbdd->query($query))
9. while($tarea = $resultado->fetch_object())
10. $tareas[] = $tarea;
11.
12. $bbdd->close();
13.
14. echo json_encode($tareas);
15. ?>
versión 5.2.0.
<select id="miCombo">
<option value="1">Texto 1</option>
<option value="2">Texto 2</option>
<option value="3">Texto 3</option>
</select>
Accedemos al Texto.
$(document).ready(function() {
// Así accedemos al Texto de la opción seleccionada
var valor = $("#miCombo option:selected").html();
alert(valor);
// Si seleccionamos la opción "Texto 2"
// nos mostrará por pantalla "Texto 2"
});
Seleccionar/deseleccionar un checkbox:
view sourceprint?
1 // Seleccionar un checkbox
2 $('input[name=acheckbox]').attr('checked', true);
3
4 // Deseleccionar un checkbox
5 $('input[name=acheckbox]').attr('checked', false);
2 $("input:checkbox").attr('checked', true);
5 $("input:checkbox").attr('checked', false);
2 var values = [];
3 var i = 0;
4 this.each(function(){
5 values[i++] = $(this).val();
6 });
7 return values;
8}
10 var arr = $("input:checked").getCheckboxValues();
En este momento esoy intentando desarrollar una web en la que hay un formulario creado
por partes (ya explicaremos en futuros posts la forma de hacerlo fácil y cómodamente). El
problema que me ha surgido es el de obtener el valor de un RadioButton sin que el
formulario sea enviado al servidor. Así que navegando por intenet, la solución propuesta más
fácil y sencilla ha sido la que explicamos a continuación.
Lo primero que necesitamos es obviamente, un formulario donde utilicemos elementos del
tipo RadioButton, como por ejemplo:
function enviar(){
for(i=0; i <document.formulario.opcion.length; i++){
if(document.formulario.opcion[i].checked){
valorSeleccionado = document.formulario.opcion[i].value;
}
}
}
1. $(document).ready(function(){
2.
3. $("#radio_comprobar").click(function() {
4. if($("#radio").is(':checked')) {
5. alert("Está activado");
6. } else {
7. alert("No está activado");
8. }
9. });
10.
11. });
Una vez que presionemos el botón recibiremos en un alert la respuesta a si está activado o
no el radio gracias a la función is(':checked')
Para terminar vamos a activar y desactivar el radio sin hacer click sobre él con estos 2
botones:
view plaincopy to clipboardprint?
1. $(document).ready(function(){
2.
3. $("#radio_activar").click(function() {
4. $("#radio").attr('checked', true);
5. });
6.
7. $("#radio_desactivar").click(function() {
8. $("#radio").attr('checked', false);
9. });
10.
11. });
El código HTML quedaría de esta forma:
view plaincopy to clipboardprint?
1. <input name="radio" id="radio" type="radio" value="1" />
2. <input name="radio_comprobar" id="radio_comprobar" type="button" value="Comprob
ar" />
3. <input name="radio_activar" id="radio_activar" type="button" value="Activar" />
4. <input name="radio_desactivar" id="radio_desactivar" type="button" value="Desac
tivar" />
1. <form name="formulario" id="formulario" class="formulario" action="" method="post
">
2. <ul>
3. <li>Nombre <span>(*)</span></li>
4. <li>Apellidos <span>(*)</span></li>
5. <li><input name="nombre" id="nombre" type="text" /></li>
6. <li><input name="apellidos" id="apellidos" type="text" /></li>
7. <li>Teléfono <span>(*)</span></li>
8. <li>E-Mail <span>(*)</span></li>
9. <li><input name="telefono" id="telefono" type="text" /></li>
10. <li><input name="email" id="email" type="text" /></li>
11. <li>Localidad <span>(*)</span></li>
12. <li>Provincia <span>(*)</span></li>
13. <li><input name="localidad" id="localidad" type="text" /></li>
14. <li>
15. <select name="provincia" id="provincia" class="mail_provincia">
16. ...............................
17. </select>
18. </li>
19. <li>¿Desea apuntarse al boletín de noticias? <span>(*)</span></li>
20. <li> </li>
21. <li>
22. <input name="boletin" id="boletin" type="radio" value="Si" /> Si
23. <input name="boletin" id="boletin" type="radio" value="No" /> No
24. </li>
25. <li> </li>
26. <li>¿Cada cuanto nos visitas? <span>(*)</span></li>
27. <li> </li>
28. <li><input name="visitas" id="visitas" type="checkbox" value="diariamente" /> Diaria
mente</li>
29. <li> </li>
30. <li><input name="visitas" id="visitas" type="checkbox" value="semanalmente" /> Sem
analmente</li>
31. <li> </li>
32. <li><input name="visitas" id="visitas" type="checkbox" value="mensualmente" /> Me
nsualmente</li>
33. <li> </li>
34. <li class="botones"><input name="submit" id="submit" type="submit" value="Validar"
/></li>
35. <li class="botones"><input name="reset" id="reset" type="reset" value="Restablecer"
/></li>
36. </ul>
37. </form>
1. $(document).ready(function(){
2. $("#formulario").submit(function () {
3. if($("#nombre").val().length < 4) {
4. alert("El nombre debe tener más de 3 caracteres");
5. return false;
6. }
7. if($("#apellidos").val().length < 4) {
8. alert("Los apellidos deben tener más de 3 caracteres");
9. return false;
10. }
11. if($("#telefono").val().length < 4 || isNaN($("#telefono").val())) {
12. alert("El teléfono debe tener más de 3 caracteres y solo números");
13. return false;
14. }
15. if($("#email").val().length < 1) {
16. alert("La dirección e-mail es obligatoria");
17. return false;
18. }
19. if($("#email").val().indexOf('@', 0) == -1 || $("#email").val().indexOf('.', 0) == -1) {
20. alert("La dirección parece incorrecta");
21. return false;
22. }
23. if($("#localidad").val().length < 1) {
24. alert("La localidad es obligatoria");
25. return false;
26. }
27. if($("#provincia option:selected").val() == "") {
28. alert("La provincia es obligatoria");
29. return false;
30. }
31. if($("#localidad").val().length < 1) {
32. alert("La localidad es obligatoria");
33. return false;
34. }
35. if($("#boletin").is(':checked')) { } else {
36. alert("Indique si desea apuntarse al boletín de noticias");
37. return false;
38. }
39. if($("#visitas").is(':checked')) { } else {
40. alert("Indique cada cuanto nos visitas");
41. return false;
42. }
43. return false;
44. });
45. });
Más adelante os explicaré uno a uno, como validar cada tipo de campo y algo más de
información sobre ello.
Ejemplo
Entradas relacionadas
Validar dirección e-mail en formularios con jQuery
Validar teléfono en formularios con jQuery
Comentarios 2 Comentarios
Categorías Formularios, jQuery
Autor admin
1.
Responder
Noo exactamente, lo puedes poner dentro del html pero con un scrip algo
asi:
jquery
o ponerlo dentro del js y mandarlo a llamar en el html …
Responder
Name (Required)
E-mail (Required)
Website
Recientes
fancyBox: Abrir imágenes, páginas web y videos en ventanas tipo Popup con jQuery
Coin Slider: Transiciones espectaculares de imágenes en jQuery
Agregar / eliminar elementos dinámicamente en un campo select con jQuery
Eliminar elementos / contenidos con remove() en jQuery
Añadir elementos / contenidos con append() y prepend() en jQuery
Etiquetas
addClass ajax alert animate append() checked click Coin Slider confirm eventos fadeIn fadeOut fancyBox
Comentarios
Diego en fancyBox: Abrir imágenes, páginas web y videos en ventanas tipo Popup con
jQuery
Edwin en jQuery Alert Dialogs, substituto del alert(), confirm() y prompt() en jQuery
ruso en Cargando contenido dinámico con la función ajax de jQuery
Esteban en Animación simple utilizando fadeIn y fadeOut de jQuery
farnco en Cargando contenido dinámico con la función ajax de jQuery
Sitios de interés
Alojamiento web
Touch Gamez
Síguenos en Facebook
<form action="" class="validar_form" method="post">
<h2>Checkbox</h2>
<div><input type="checkbox" name="chck[]" value="opt 1 chckd"
/><label>Opt 1</label></div>
<div><input type="checkbox" name="chck[]" value="opt 2 chckd"
/><label>Opt 2</label></div>
<div><input type="checkbox" name="chck[]" value="opt 3 chckd"
/><label>Opt 3</label></div>
<div class="errors error1"></div>
<h2>Radio</h2>
<div><input type="radio" name="gruporad" value="rad 1 chckd"
/><label>Radio 1</label></div>
<div><input type="radio" name="gruporad" value="rad 2 chckd"
/><label>Radio 2</label></div>
<div><input type="radio" name="gruporad" value="rad 3 chckd"
/><label>Radio 3</label></div>
<div class="errors error2"></div>
<h2>Select</h2>
<div>
<select name="select">
<option value="" selected>------</option>
<option value="select 1 chckd">Opcion 1</option>
<option value="select 1 chckd">Opcion 2</option>
<option value="select 1 chckd">Opcion 3</option>
</select>
<div class="errors error3"></div>
</div>
<button class="enviar">Enviar</button>
</form>
<script type="text/javascript" src="http://code.jquery.com/jquery-
latest.min.js"></script>
<script type="text/javascript">
$(".validar_form").submit( function(){
// Aqui ira nuestro codigo
});
</script>
$(".validar_form").submit( function(){
var check = $("input[type='checkbox']:checked").length;
var radio = $("input[type='radio']:checked").length;
var select = $("select option:selected").val();
if(check == ""){
$('.error1').text("Seleccione al menos un checkbox");
return false;
} else if(radio == ""){
$('.error2').text("Seleccione un radio button");
return false;
} else if(select == ""){
$('.error3').text("Seleccione una opcion");
return false;
} else {
$('.errors').hide();
alert('Ok!');
return true;
}
});