2012-01-03 13 views
7

私は、すべてのスライドを起こすクリックslideToggle行動することでjQuery関数の繰り返しを防ぐ方法は?

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

ような単純なjQueryの機能を持っていますが、問題は、それはあまりにも再びurlをロードすることです。

load()の機能を1回だけ実行するように制限するにはどうすればよいですか?クリックするたびにslideToggle()を実行してください。つまり、次のクリックでload()(機能全体ではなく読み込みのみ)を防ぐ方法は?

答えて

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

とグローバルVARSのない別の方法:

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

+1私はこの1つが好きです。 – pimvdb

+0

+1は不要なグローバル変数を使用しないためです。 – jbabey

8

は、それがロードされているかどうかと言う変数(グローバル)を持っています。たとえば、

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

これにより、クリックごとにslideToggleが発生しますが、1回だけ読み込むページになります。 :)

関連する問題