El evento toggle() toma dos argumentos, cada uno de los cuales es una función . El primer clicc hace que se ejecute la primera funcion y el segundo click hace que se ejecute la segunda función.
$(document).ready(function() {
$('#switcher h3').toggle(function() {
$('#switcher .button').addClass('hidden');
}, function() {
$('#switcher .button').removeClass('hidden');
});
El metodo .toggleClass() comprueba si existe la clase antes de aplicarla.
$(document).ready(function() {
$('#switcher h3').click(function() {
$('#switcher .button').toggleClass('hidden');
});
});
El metodo .hover() toma dos argumentos de función la primera se ejecuta en el over y la segunada al salir.
$(document).ready(function() {
$('#switcher .button').hover(function() {
$(this).addClass('hover');
}, function() {
$(this).removeClass('hover');
});
});
jueves, 18 de julio de 2013
Eventos
El metodo bind nos permite especificar cualquier evento javascript y anexarle un comportamiento.
$(document).ready(function() {
$('#switcher-large').bind('click', function() {
$('body').addClass('large');
});
});
body.large .chapter {
font-size: 1.5em;
}
<div id="switcher">
<h3>Estilo del switch</h3>
<div class="button selected" id="switcher-default">
Normal
</div>
<div class="button" id="switcher-narrow">
Narrow Column
</div>
<div class="button" id="switcher-large">
Large Print
</div>
</div>
$(document).ready(function() {
$('#switcher-large').bind('click', function() {
$('body').addClass('large');
});
});
body.large .chapter {
font-size: 1.5em;
}
<div id="switcher">
<h3>Estilo del switch</h3>
<div class="button selected" id="switcher-default">
Normal
</div>
<div class="button" id="switcher-narrow">
Narrow Column
</div>
<div class="button" id="switcher-large">
Large Print
</div>
</div>
Métodos transversales DOM
.filter()
.next()
.nextALL()
.prev()
.prevAll
.Simblings
$('a').filter(function() {
return this.hostname && this.hostname != location.hostname;
}).addClass('external');
});
$('td:contains(Henry)').nextAll().andSelf().addClass('highlight');
.next()
.nextALL()
.prev()
.prevAll
.Simblings
$('a').filter(function() {
return this.hostname && this.hostname != location.hostname;
}).addClass('external');
});
$('td:contains(Henry)').nextAll().andSelf().addClass('highlight');
Selectores de formularios
Le toca el turno a los selectores
de formulario. Este tipo de selectores se utilizan para acceder a una
gran variedad de elementos de formulario dependiendo del tipo.
Como son una gran cantidad no voy a
seguir el formato empleado en los otros selectores. Vamos a ver un
resumen de la función de cada selector y si acaso algunos ejemplos. De
todas formas la mayoría son autodescriptivos.
- Url de la documentación: http://api.jquery.com/category/selectors/form-selectors/
Form Selector
- :input Selector : Selecciona todos los elementos de formulario(<input> de todos los tipos, <select>, <textarea> y <button>).
- :text Selector : Selecciona todos los inputs de tipo texto(<input type=”text”>).
- :password Selector : Selecciona todos los inputs de tipo password(<input type=”password”>).
- :radio Selector : Selecciona todos los inputs de tipo radio(<input type=”radio”>).
- :checkbox Selector : Selecciona todos los inputs de tipo checkbox(<input type=”checkbox”>).
- :submit Selector : Selecciona todos los inputs de tipo submit y los botones (<input type=”submit”>, <button>).
- :image Selector : Selecciona todos los inputs de tipo image(<input type=”image”>).
- :reset Selector : Selecciona todos los botones de reset(<input type=”reset”>).
- :button Selector : Selecciona todos los botones e inputs de tipo button(<button>, <input type=”button”>).
- :file Selector : Selecciona todos los inputs de subida de archivos(<input type=”file”>).
- :enabled Selector : Selecciona todos los elementos de formulario que están habilitados, es decir, aquellos que no tienen el atributo disabled.
- :disabled Selector: Selecciona todos los elementos de formulario que están deshabilitados, es decir, aquellos que tienen el atributo disabled.
- :checked Selector: Selecciona todos los elementos del formulario que están checkeados, es decir, los botones de checkbox y radio seleccionados.
- :selected Selector: Selecciona todos los elementos de formulario que están seleccionados, es decir, los elementos <option> seleccionados en un <select>.
Como la mayoría de selectores de
formularios son autodescriptivos no veo la necesidad de ejemplos. Se
utilizan mucho para la validación de formularios o incluso para dar
estilos en general a todo un formulario.
Como con otros selectores, los selectores
de formulario se pueden combinar con mayor especificidad. Podemos, por
ejemplo seleccionar todos los botones de tipo radio seleccionados pero
no los de tipo checkbox mediante la combinación de los selectores $(‘:radio:checked’) o seleccionar todos los inputs de tipo text deshabilitados mediante la combinación de selectores $(‘:text:disabled’).
Selectores personalizados
esta funcion busca todos
$(document).ready(function() {
// $('tr:odd').addClass('alt');
$('tr:nth-child(even)').addClass('alt');
le aplica a todos los tr impares el estilo alt
.alt {
background-color: #ccc;
}
<table>
<tr>
<td>As You Like It</td>
<td>Comedy</td>
<td></td>
</tr>
<tr>
<td>All's Well that Ends Well</td>
<td>Comedy</td>
<td>1601</td>
</tr>
<tr>
<td>Hamlet</td>
<td>Tragedy</td>
<td>1604</td>
</tr>
<tr>
<td>Macbeth</td>
<td>Tragedy</td>
<td>1606</td>
</tr>
<tr>
<td>Romeo and Juliet</td>
<td>Tragedy</td>
<td>1595</td>
</tr>
<tr>
<td>Henry IV, Part I</td>
<td>History</td>
<td>1596</td>
</tr>
<tr>
<td>Henry V</td>
<td>History</td>
<td>1599</td>
</tr>
</table>
// $('tr:odd').addClass('alt');
$('tr:nth-child(even)').addClass('alt');
$('td:contains(Henry)').nextAll().andSelf().addClass('highlight');//.siblings()
$('th').parent().addClass('table-heading');
});
$(document).ready(function() {
// $('tr:odd').addClass('alt');
$('tr:nth-child(even)').addClass('alt');
le aplica a todos los tr impares el estilo alt
.alt {
background-color: #ccc;
}
<table>
<tr>
<td>As You Like It</td>
<td>Comedy</td>
<td></td>
</tr>
<tr>
<td>All's Well that Ends Well</td>
<td>Comedy</td>
<td>1601</td>
</tr>
<tr>
<td>Hamlet</td>
<td>Tragedy</td>
<td>1604</td>
</tr>
<tr>
<td>Macbeth</td>
<td>Tragedy</td>
<td>1606</td>
</tr>
<tr>
<td>Romeo and Juliet</td>
<td>Tragedy</td>
<td>1595</td>
</tr>
<tr>
<td>Henry IV, Part I</td>
<td>History</td>
<td>1596</td>
</tr>
<tr>
<td>Henry V</td>
<td>History</td>
<td>1599</td>
</tr>
</table>
Selector contains()
$(document).ready(function() {// $('tr:odd').addClass('alt');
$('tr:nth-child(even)').addClass('alt');
$('td:contains(Henry)').nextAll().andSelf().addClass('highlight');//.siblings()
$('th').parent().addClass('table-heading');
});
Selectores de atributo
Nos permite buscar dentro de los atributos de una etiqueta.
$(document).ready(function() {
$('a[href^=mailto:]').addClass('mailto'); // busca en el atributo donde el principio se = mailito
$('a[href$=.pdf]').addClass('pdflink'); // busca en el atributo donde el final sea = pdf
$('a[href*=henry][href!=mailto:henryiv@king.co.uk]').addClass('henrylink');
// busca en el atributo donde el final sea = * cualquer cosa y signo de exclamacion para cosas negativas, los atributos se pueden combinar
a.mailto {
background: url(images/email.png) no-repeat 100% 2px;
padding-right: 18px;
}
a.pdflink {
background: url(images/pdf.png) no-repeat 100% 0;
padding-right: 18px;
}
a.henrylink {
background-color: #fff;
padding: 2px;
border: 1px solid #000;
<li><a href="/asyoulikeit/">As You Like It</a></li>
<li><a href="hamlet.pdf">Hamlet</a></li>
<li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
<li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry V</a></li>
$(document).ready(function() {
$('a[href^=mailto:]').addClass('mailto'); // busca en el atributo donde el principio se = mailito
$('a[href$=.pdf]').addClass('pdflink'); // busca en el atributo donde el final sea = pdf
$('a[href*=henry][href!=mailto:henryiv@king.co.uk]').addClass('henrylink');
// busca en el atributo donde el final sea = * cualquer cosa y signo de exclamacion para cosas negativas, los atributos se pueden combinar
a.mailto {
background: url(images/email.png) no-repeat 100% 2px;
padding-right: 18px;
}
a.pdflink {
background: url(images/pdf.png) no-repeat 100% 0;
padding-right: 18px;
}
a.henrylink {
background-color: #fff;
padding: 2px;
border: 1px solid #000;
<li><a href="/asyoulikeit/">As You Like It</a></li>
<li><a href="hamlet.pdf">Hamlet</a></li>
<li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
<li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry V</a></li>
Selectores
Son tres tipos de selectores que podemos utilizar
$('p') selecciona cualquier etiqueta html
$('#ud-id') selecciona los ids de la etiquetas o divs
$('.clase') Selecciona todos los elementos que tengan la clase
Se genera un bucle automatico que busca los elemtos que se pasan como parametro, es decir nos ahorramos el for.
Ejemplo: Esto se lee asi buscas los hijos li de id selected-plays y le aplica el estilo horizontal
y las que no sean hijos directos de selected-plays que son li y no se le aplico el estilo horizonal le aplicias el estilo 'sub-level'
$(document).ready(function() {
$('#selected-plays > li').addClass('horizontal');
$('#selected-plays li:not(.horizontal)').addClass('sub-level');
});
.horizontal {
float: left;
list-style: none;
margin: 10px;
}
<ul id="selected-plays" class="clear-after">
<li>Comedies
<ul>
<li><a href="/asyoulikeit/">As You Like It</a></li>
<li>All's Well That Ends Well</li>
<li>A Midsummer Night's Dream</li>
<li>Twelfth Night</li>
</ul>
</li>
<li>Tragedies
<ul>
<li><a href="hamlet.pdf">Hamlet</a></li>
<li>Macbeth</li>
<li>Romeo and Juliet</li>
</ul>
</li>
<li>Histories
<ul>
<li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
<ul>
<li>Part I</li>
<li>Part II</li>
</ul>
</li>
<li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry V</a></li>
<li>Richard II</li>
</ul>
</li>
</ul>
$('p') selecciona cualquier etiqueta html
$('#ud-id') selecciona los ids de la etiquetas o divs
$('.clase') Selecciona todos los elementos que tengan la clase
Se genera un bucle automatico que busca los elemtos que se pasan como parametro, es decir nos ahorramos el for.
Ejemplo: Esto se lee asi buscas los hijos li de id selected-plays y le aplica el estilo horizontal
y las que no sean hijos directos de selected-plays que son li y no se le aplico el estilo horizonal le aplicias el estilo 'sub-level'
$(document).ready(function() {
$('#selected-plays > li').addClass('horizontal');
$('#selected-plays li:not(.horizontal)').addClass('sub-level');
});
.horizontal {
float: left;
list-style: none;
margin: 10px;
}
<ul id="selected-plays" class="clear-after">
<li>Comedies
<ul>
<li><a href="/asyoulikeit/">As You Like It</a></li>
<li>All's Well That Ends Well</li>
<li>A Midsummer Night's Dream</li>
<li>Twelfth Night</li>
</ul>
</li>
<li>Tragedies
<ul>
<li><a href="hamlet.pdf">Hamlet</a></li>
<li>Macbeth</li>
<li>Romeo and Juliet</li>
</ul>
</li>
<li>Histories
<ul>
<li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
<ul>
<li>Part I</li>
<li>Part II</li>
</ul>
</li>
<li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry V</a></li>
<li>Richard II</li>
</ul>
</li>
</ul>
Forma de llamar un jquery
Esta es la sintaxis para llamar a jquery donde se va ejecutar cuando se carga todo el html y mediante una funcion anonima.
$(document).ready(function() {
$('.poem-stanza').addClass('highlight');
});
En jQuery, el signo de $ es simplemente un alias para jquery. Puden surgir conflictos si se usan mas de estas librerias, para evitar estos conflictos remplazamos el signo de $ con jQuery y listo.
al ejecutar el archivo le agrea el estilo al la clase
.highlight {
font-style: italic;
border: 1px solid #888;
padding: 0.5em;
margin: 0.5em 0;
background-color: #ffc;
}
<div class="poem-stanza">
<div>sevot yhtils eht dna ,gillirb sawT'</div>
<div>;ebaw eht ni elbmig dna eryg diD</div>
<div>,sevogorob eht erew ysmim llA</div>
<div>.ebargtuo shtar emom eht dnA</div>
</div>
$(document).ready(function() {
$('.poem-stanza').addClass('highlight');
});
En jQuery, el signo de $ es simplemente un alias para jquery. Puden surgir conflictos si se usan mas de estas librerias, para evitar estos conflictos remplazamos el signo de $ con jQuery y listo.
al ejecutar el archivo le agrea el estilo al la clase
.highlight {
font-style: italic;
border: 1px solid #888;
padding: 0.5em;
margin: 0.5em 0;
background-color: #ffc;
}
<div class="poem-stanza">
<div>sevot yhtils eht dna ,gillirb sawT'</div>
<div>;ebaw eht ni elbmig dna eryg diD</div>
<div>,sevogorob eht erew ysmim llA</div>
<div>.ebargtuo shtar emom eht dnA</div>
</div>
martes, 16 de julio de 2013
Backups MySQL con mysqldump
Mysqldump, como la mayoría sabéis, es una herramienta de mysql que sirve para realizar copias de seguridad de bases de datos. Es esencial conocer el uso básico de esta herramienta, como es esencial tener un sistema de backups adecuado para cualquier dato almacenado con un mínimo de importancia.
Os voy a poner los ejemplos más básicos y comunes para realizar backups desde línea de comandos con mysqldump.
Realizar backup de una única base de datos:
mysqldump -u root -p nombre_base_de_datos > fichero.sql
De este modo, realizará el backup de la base de datos, solicitando la clave del usuario root mysql, si queréis también se puede especificar pegado a la letra “p” -pclave.
Y si quisieramos restaurar esa base de datos, haríamos lo siguiente:
mysql -u root -p nombre_base_de_datos < fichero.sql
Lo mismo ocurre con la clave del usuario root, la podemos especificar o esperar a que la pregunte.
Si quisieramos realizar un backup de todas las bases de datos:
mysqldump -u root -p --all-databases > fichero.sql
Y si solo quisieramos hacer backup de un par de bases de datos:
mysqldump -u root -p --databases base_datos1 base_datos2 > fichero.sql
Para hacer backup de una sola tabla, dentro de una base de datos:
mysqldump -u root -p base_datos tabla > fichero.sql
Esto es, a grandes rasgos, lo más básico de la herramienta mysqldump, en la propia ayuda de la herramienta encontraréis mucha más información:
mysqldump --help
martes, 2 de julio de 2013
Conectar mysql de manera remota
Cuando tratamos de conectar a un servidor MySQL y obtenemos el ERROR 1130 (HY000): Host ‘x.x.x.x’ is not allowed to connect to this MySQL server imaginamos que algo habrá que configurar en el server MySQL para permitir el acceso remoto a un cliente MySQL, exactamente eso, a nuestro servidor MySQL tenemos que decirle como, desde donde y quien puede acceder a que bases de datos configuradas en el servidor MySQL. Para los novatos como yo, este es el error de conexión que obtenemos si tratamos de conectar de forma remota a nuestro server MyQSL sin configurar:
Nota: si tratamos de acceder incluso desde el propio server MySQL a la consola de MySQL usando como destino de conexión la IP de cualquiera de las interfaces de red de servidor la respuesta será la misma. Con la configuración por defecto del servidor MySQL solo podremos acceder en modo local y apuntando a localhost o 127.0.0.1.
Estos son los pasos para habilitar la conexión remota desde un cliente determinado:
hnoguera@cliente:~$ mysql -h 10.0.0.143 -u cliente -p
Enter password:
ERROR 1130 (HY000): Host '10.0.0.15' is not allowed to connect to this MySQL server
Nota: si tratamos de acceder incluso desde el propio server MySQL a la consola de MySQL usando como destino de conexión la IP de cualquiera de las interfaces de red de servidor la respuesta será la misma. Con la configuración por defecto del servidor MySQL solo podremos acceder en modo local y apuntando a localhost o 127.0.0.1.
Estos son los pasos para habilitar la conexión remota desde un cliente determinado:
-
Entramos como root en el server MySQL, damos de alta un nuevo usuario
con el nombre que queramos usar con el cliente remoto al que le damos
acceso a una o varias de las bases de datos que haya creadas en el
servidor MySQL, desde una IP de cliente determinada y con un password
definido para el usuario a crear:
hnoguera@cliente:~$ mysql -h localhost -u root -p Enter password: mysql> GRANT SELECT, INSERT ON bdd.* TO 'nuevo_usuario'@'10.0.0.15' IDENTIFIED BY 'pass' ; Query OK, 0 rows affected (0.00 sec)
Nota: Acabamos de crear el usuario llamado “nuevo_usuario” y le hemos dado permisos de selección e inserción (SELECT, INSERT) a todas las tablas de la base de datos llamada “bdd” (bdd.*) desde la IP remota “10.0.0.15″ y con el password “pass”. En cuanto a los privilegios dados al usuario podemos elegir los que necesitemos -> tabla de privilegios que provee MySQL
Con el comando anterior se hacen todos los pasos a la vez, se crea el usuario con el password especificado, se le dan permisos de acceso y se especifica una IP desde la que ese usuario se podrá conectar de forma remota, pero esto no es todo para poder acceder de forma remota al server MySQL.
-
Lo siguiente es cambiar la configuración del archivo de configuración
mysql que está en /etc/mysql/my.cnf, y en la línea 47 tenemos:
bind-address = 127.0.0.1
En este parámetro se configura la IP de la interfaz local de escucha del servidor MySQL, por defecto la escucha se hace solo como localhost así que para que podamos acceder desde cualquier IP que tenga el servidor configurada necesitaremos cambiar la línea anterior por:
bind-address = 0.0.0.0
Nota: no es posible poner más de una IP como dirección de escucha así que no podemos configurar por ejemplo solo 2 de las 3 interfaces de red de nuestro server, serán o todas o solo una de ellas.
-
Ahora solo el servidor MySQL:
root@LAMP-squeeze:~# /etc/init.d/mysql restart Stopping MySQL database server: mysqld. Starting MySQL database server: mysqld.
-
Y probar que todo funciona correctamente desde el cliente habilitado:
hnoguera@cliente:~# mysql -h 10.0.0.143 -u nuevo_usuario -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 36 Server version: 5.1.49-3 (Debian) Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Suscribirse a:
Entradas (Atom)