2012-01-03 24 views
7

que tienen una simple función de jQuery como¿Cómo prevenir la repetición en la función jQuery?

$('.button').click(function(){ 
    $("#target").slideToggle().load('http://page'); 
}); 

Por slideToggle comportamiento, todos los clics que causan una diapositiva, pero el problema es que va a cargar de nuevo url también.

¿Cómo puedo limitar la función load() que se realizará una sola vez, pero slideToggle() en cada clic. En otras palabras, ¿cómo evitar load() (solo carga, no toda la función) en los clics siguientes?

Respuesta

8
$('.button') 
    .on('click.loadPage', function() { 
     $("#target").load('http://page'); 
     $(this).off("click.loadPage"); 
    }) 
    .on('click.slideToggle', function(){ 
     $("#target").slideToggle(); 
    }); 

y otra manera sin VARs globales:

$('.button') 
    .on('click', function() { 
     if (!$(this).data("loaded")) { 
      $("#target").load('http://page'); 
      $(this).data("loaded", true); 
     } 
     $("#target").slideToggle(); 
    }); 
+0

+1 Me gusta éste. – pimvdb

+0

+1 por no usar variables globales innecesarias. – jbabey

8

Tienen una variable (global) que indica si se ha cargado o no. Por ej.

Esto hará que la diapositiva pase se produzca en cada clic, pero la página solo cargue una vez. :)

Cuestiones relacionadas