Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas
Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas

domingo, 14 de abril de 2013

Como crear un plugin con JQuery


A modo de ejemplo, podemos ver a continuación un código fuente de un plugin muy sencillo:

jQuery.fn.desaparece = function() {
  this.each(function(){
     elem = $(this);
     elem.css("display", "none");
  });   
  return this;
};

Este plugin permitiría hacer desaparecer a los elementos de la página y podríamos invocarlo por ejemplo de la siguiente manera:

$("h1").desaparece();

 Caracteristicas de un plugin:

-El archivo que crees con el código de tu plugin lo debes nombrar como jquery.[nombre de tu plugin].js. Por ejemplo jquery.desaparece.js.

-Añade las funciones como nuevos métodos por medio de la propiedad fn del objeto jQuery, para que se conviertan en métodos del propio objeto jQuery.

-Dentro de los métodos que añades como plugins, la palabra "this" será una referencia al objeto jQuery que recibe el método. Por tanto, podemos utilizar "this" para acceder a cualquier propiedad del elemento de la página con el estamos trabajando.

-Debes colocar un punto y coma ";" al final de cada método que crees como plugin, para que el código fuente se pueda comprimir y siga funcionando correctamente. Ese punto y coma debes colocarlo después de cerrar la llave del código de la función.

-El método debe retornar el propio objeto jQuery sobre el que se solicitó la ejecución del plugin. Esto lo podemos conseguir con un return this; al final del código de la función.

-Se debe usar this.each para iterar sobre todo el conjunto de elementos que puede haber seleccionados. Recordemos que los plugins se invocan sobre objetos que se obtienen con selectores y la función jQuery, por lo que pueden haberse seleccionado varios elementos y no sólo uno. Así pues, con this.each podemos iterar sobre cada uno de esos elementos seleccionados. Esto es interesante para producir código limpio, que además será compatible con selectores que correspondan con varios elementos de la página.

-Asigna el plugin siempre al objeto jQuery, en vez de hacerlo sobre el símbolo $, así los usuarios podrán usar alias personalizados para ese plugin a través del método noConfict(), descartando los problemas que puedan haber si dos plugin tienen el mismo nombre.


Ejemplo:

jQuery.fn.parpadea = function() {
  this.each(function(){
     elem = $(this);
     elem.fadeOut(250, function(){
        $(this).fadeIn(250);
     });
  });
  return this;
};



Ahora veamos cómo podríamos invocar este plugin:

$(document).ready(function(){
  //parpadean los elementos de class CSS "parpadear"
  $(".parpadear").parpadea();
  
  //añado evento clic para un botón. Al pulsar parpadearán los elementos de clase parpadear
  $("#botonparpadear").click(function(){
     $(".parpadear").parpadea();
  });
});



<body>
  <p class="parpadear">Hola que tal, esto parpadeó gracias a jQuery!</p>

  <p>Parafo normal que no va a parpadear.</p>
  <p class="parpadear">Sí parpadea</p>
  <p>Parafo normal que no va a parpadear tampoco...</p>
  
div class="parpadear" style="background-color: #ff9966; padding: 10px;">Esta capa también tiene la clase parpadear, con lo que ya se sabe...</div>
  <p>
<input type="button" value="Parpadea de nuevo" id="botonparpadear">
</p>
</body>






domingo, 14 de octubre de 2012

Imprimir solo el contenido que esta dentro de un Div

La forma recomendada para imprimir el contenido de un div es con JQuery, mediante el siguiente ejemplo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html>
<head>
<title>Print Part of a Page With jQuery</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery.print.js"></script>
<script type="text/javascript">
// When the document is ready, initialize the link so
// that when it is clicked, the printable area of the
// page will print.
$(
function(){
// Hook up the print link.
$( "a" )
.attr( "href", "javascript:void( 0 )" )
.click(
function(){
// Print the DIV.
$( ".printable" ).print();
// Cancel click event.
return( false );
}
)
;
}
);
</script>
<style type="text/css">
body {
font-family: verdana ;
font-size: 14px ;
}
h1 {
font-size: 180% ;
}
h2 {
border-bottom: 1px solid #999999 ;
}
.printable {
border: 1px dotted #CCCCCC ;
padding: 10px 10px 10px 10px ;
}
img {
background-color: #E0E0E0 ;
border: 1px solid #666666 ;
padding: 5px 5px 5px 5px ;
}
a {
color: red ;
}
</style>
</head>
<body>
<h1>
Print Part of a Page With jQuery
</h1>
<p>
<a>Print Bio</a>
</p>
<div class="printable">
<h2>
Jen Rish
</h2>
<p>
Jen Rish, upcoming fitness and figure model has some
crazy developed legs!
</p>
<p>
<img
src="jen_rish_crazy_legs.jpg"
width="380"
height="570"
alt="Jen Rish Has Amazing Legs!"
/>
</p>
<p>
I bet she does some <strong>serious squatting</strong>!
</p>
</div>
</body>
</html>
Otra forma para imprimir el contenido que esta dentro de un div vamos a usar Javascript:
function ImprimeDiv()
{
var divToPrint=document.getElementById('DivIdToPrint');
var newWin=window.open('','Print-Window','width=100,height=100');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>');
newWin.document.close();
setTimeout(function(){newWin.close();},10);
}
Este JavaScript solo abrira una nueva ventana con el contenido del div, este se imprimira y luego se cerrara la ventana. Es muy importante el timeout de la ultima linea, de otra manera la ventana en IE se cerrara antes de que se imprima.

jueves, 11 de octubre de 2012

Como ejecutar un metodo (code behind) en JavaScript

Para poder ejecutar un metodo en el codigo c# (code behind) desde javascript nos vamos a

auxiliar de la funcion js que nos provee ASP.NET: __doPostBack().


Esta funcion toma dos argumentos:


1) EventTarget


2) eventArgument


1) EventTarget: contiene el identificador del control que hace el postback


2) eventArgument: contiene todos los datos adicionales asociados con el control.


sintaxis:__doPostBack(EventTarget, eventArgument)


Ejemplo:

Creamos un boton HTML y un control Button ASP.NET en el codigo ASP


 <a id="Boton1" href="javascript:__doPostBack('Button1','')">LinkButton</a>


<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />




este boton va a llamar a la funcion javascript __doPostBack(). Luego en el codigo c# ponemos

  el siguiente codigo en el evento Page_Load:

if (Request.Form["__EVENTTARGET"] == "Boton1")
{
    //llamamos el metodo que queremos ejecutar, en este caso el evento onclick del boton Button2
    Button2_Click(this, new EventArgs());
}


En este caso llamamos al metodo del evento onclick del button2, pero podriamos haber llamado al

metodo que quisieramos.