2012-01-03 6 views
7

mam prostą funkcję jQuery jakoJak zapobiec powtórzeniu w funkcji jQuery?

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

Przez slideToggle zachowań, każde kliknięcie powoduje poślizg, ale problemem jest to, że będzie ponownie załadować url zbyt.

W jaki sposób mogę ograniczyć funkcję load() do wykonania tylko raz, ale slideToggle() przy każdym kliknięciu. Innymi słowy, jak zapobiec load() (tylko ładowanie, a nie cała funkcja) w kolejnych kliknięć?

Odpowiedz

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

i inny sposób bez globalnych Vars:

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

+1 mi się podoba. – pimvdb

+0

+1 za niestosowanie niepotrzebnych zmiennych globalnych. – jbabey

8

Masz zmienną (globalną), która określa, czy została załadowana, czy nie. Np .:

var loaded = false; 
$('.button').click(function(){ 
    if(!loaded){ 
     $('#target').load('http://page'); 
     loaded = true; 
    } 
    $("#target").slideToggle(); 
}); 

Spowoduje to, że SlideToggle wystąpi przy każdym kliknięciu, ale strona będzie ładować tylko raz. :)

Powiązane problemy