2010-05-29 86 views
0

我在ASP.NET MVC項目中遇到了一些問題。使用ajax導航時,在頁面上運行ajax腳本?

我有一個在右下角(如臉譜)聊天的div,當然我不希望這個重新加載時,導航到我的所有導航是ajax。

我現在面臨的問題是,我使用下面的代碼在視圖頁面的頂部:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#divTS').hide(); 
    $('a#showTS').click(function() { 
$('#divTS').slideToggle(400); 
return false; 
    }); 
}); 

</script> 

的問題是,這個代碼僅裝載了Ajax和似乎不火?我想在新加載的視圖中運行所有腳本,就像我沒有用ajax導航一樣。

我不能把它放在site.master中,因爲它只加載一次,然後可能我試圖隱藏的div不存在。

有沒有一種很好的方法在ajax加載的div中運行腳本?

回答

0

您將需要在您的ajax腳本的成功回調函數中運行腳本。我建議你外部化到一個單獨的功能如下:

function setupEffects() { 
    $('#divTS').hide(); 
    $('a#showTS').click(function() { 
     $('#divTS').slideToggle(400); 
     return false; 
    }); 
} 

$(document).ready(function() { 
    setupEffects(); 
}); 

而在你的腳本調用的成功回調這個函數:

success: function(result) { 
    setupEffects(); 
} 
+0

這不是說每次有人瀏覽時都會運行所有腳本,即使是與當前頁面無關的腳本也是如此。 – 2010-05-30 08:36:26

+0

根據其功能將腳本組織爲單獨的方法,並在必要時調用它們。 – 2010-05-30 08:50:31

+0

謝謝,猜我會這樣做:) – 2010-05-30 08:53:16

0

當您導航到另一個視圖時,主頁面將重新加載。您也可以使用$('#div').length > 0來檢查div是否存在。

順便說一下,不應該使用「全站點」ajax導航。重新加載您的導航聊天 - 最好把它放到一個控件(使事情變得更容易)。

+0

的AJAX導航的整個想法是不會重新加載母版頁...另外,完整的網站ajax導航是基於一些搜索,它似乎是最好的方式來做到這一點 – 2010-05-29 20:25:07

+0

看到這個鏈接http://stackoverflow.com/questions/554243/how-are-the-facebook- chat-windows-implemented – 2010-05-29 20:26:48