2011-08-07 5 views
2

クリックすると、divにいくつかのhtmlをロードしてスクリプトをロードするためのajaxコールが生成されます。最初のクリック後にそのイベントのバインドを解除し、そのdivの表示と非表示を切り替える別のクリックイベントに置き換えます。私はこれまでのことを持っていますが、divの仕事をトグルするクリックイベントを登録しようとする試みはありません。jQueryのクリックイベント - 最初のクリックはクリックトグル後のajaxコールを作成します

$('#anchor').click(function() { 
    $('#div').load('file.html', function() {  
     $.getScript('script.js');  
     $('#anchor').unbind(); 
    }); 
}); 

答えて

2
$('#anchor').click(function(e) { 
    e.preventDefault(); // prevent the browsers following the link 
    $('#div').load('file.html', function() {  

     // make sure to bind once the new script has been included 
     // i.e. within .getScript's callback 
     $.getScript('script.js', function() { 
      $('#anchor').unbind("click").click(myShowHideFunc); 
     });  
    }); 
}); 
+0

完璧、ありがとうございます! – user883036

1

我々はバインド解除ときに、他のクリックハンドラは触れ​​ないようにだけ、現在のイベントハンドラをバインド解除するのに役立つイベントの名前空間でこれを試してみてください。

$('#anchor').click('click.anchor', function() { 

    $('#div').load('file.html', function() {  
     $.getScript('script.js', function(){  
      $('#anchor').unbind('click.anchor').click(function(){ 
      $('#div').toggle(); 
      }); 
     }); 
    }); 
}); 
+2

私は 'one'ハンドラが好きですが、この場合は問題が発生する可能性があります。リンクが再度クリックされないため、要求は失敗し、ユーザーはページをリロードしなければなりません。 – karim79

+0

私はあなたに同意します@karim – ShankarSangoli

+0

@karim79 .oneを使うときは心に留めておいてください。 – rkw

関連する問題