2013-05-30 30 views
0

我在JS中有一個應用程序,我必須使用AJAX加載部分應用程序。 當AJAX函數完成時,腳本被執行。停止AJAX中加載的腳本加載的JS事件的執行

但是當我想加載我的應用程序的另一部分,我想知道如何刪除綁定到我剛加載的應用程序部分的所有事件和變量?

例如:

$('#loadPart1').click(function(){ 
    $.ajax({ 
     url : url, 
     success : function(xhr){ 
      // xhr contains javascript to execute 
      // and events I want to stop executing afterward 
      $('body').html(xhr); 
    }); 
}); 

// load another part of the app 
// should stop execute previous JS 
// and now executes just loaded JS from this AJAX load. 
$('#loadPart2').click(function(){ 
    $.ajax({ 
     url : url, 
     success : function(xhr){ 
      // xhr contains javascript to execute 
      // and replace old script 
      $('body').html(xhr); 
    }); 
}); 

我希望你明白我想解釋什麼。它只是一個幫助代碼,這不是我真正的代碼,所以不要打擾它,它只是一個讓你理解問題的形象。

'因爲我已經有了一個應用程序,但是當我在AJAX中加載某些東西時,以前的腳本事件仍然會執行。

有沒有一種技術,一種模式,可以阻止Javascript的執行我不想要。我想刪除所有事件,但沒有明確地調用它們。

+0

我不認爲你真的想阻止你的腳本的執行,但只是解除綁定事件。請參閱解除綁定方法:http://api.jquery.com/unbind/ – Brewal

+1

如果這些事件綁定到正在刪除的元素,則事件將自動與它們一起刪除。如果你使用的是事件委託,你應該記住這一點,並從一個將被刪除的元素進行委託,這樣這些事件也將被自動清除。 –

回答