2011-08-28 64 views
1

我使用ajax加載了一個局部視圖到一個主視圖,但努力讓jquery在局部視圖內觸發。從ajax觸發jquery在mvc3中加載部分視圖

基本上我試圖允許加載一個包含一個按鈕,允許我打開一個對話窗口的部分視圖。

我的局部視圖包含這一小塊JS

<script type="text/javascript"> 
    $(document).ready(function() { 
     alert('ready'); 
     $('#edit-note').click(function() { 
      //$('#dialog').dialog('open'); 
      alert("alert displayed from jquery"); 
     }); 
    }); 

</script> 

的但是它永遠不會被解僱。

我需要做什麼才能使jquery從動態加載的局部視圖中工作?

+0

凡是您向我們展示過的代碼片段?它是在主視圖還是局部視圖中? –

回答

4

您的代碼以$('#edit-note').click(function() {開頭,在文檔準備就緒時運行。在那個時候,你還沒有加載你的局部視圖,所以$('#edit-note')是一個空集合。

jQuery的可以讓您將事件綁定到尚未頁面上的元素,通過其live方法:

$('#edit-note').live('click', function() { 
    alert("alert displayed from jquery"); 
}); 
+0

嗨,約瑟夫,我有部分視圖中的上述代碼,動態加載,而不是實際的頁面。理想情況下,我不希望上面的代碼在實際頁面中,我寧願將它保留在加載的部分視圖中。
我試過了你的建議,但它並沒有被觸發。 –

+2

@Diver Dan:你把它包裝在'$(document).ready'中嗎?你不應該。由於您使用的是'live',因此不需要$(document).ready'。 –

+0

你的權利。我把所有的東西都從實際的頁面移到了全局的js文件中,並且都很好。謝謝 –

0

你能做的就是用一個@ Ajax.ActionLink另一件事,並在AjaxOptions使用OnSuccess事件來調用一個執行你試圖執行的JQuery的JavaScript函數。即。

@Ajax.ActionLink("Create New", "Create", "Employee", new AjaxOptions() 
{ 
UpdateTargetId = "divAction", 
InsertionMode = InsertionMode.Replace, 
HttpMethod = "GET", 
OnSuccess = "createNew_Success" 
}, new { id = "btnAdd", @class = "newButton", OnClick = "$('#divAction').slideDown();" }) 

然後,在JavaScript:

<script type="text/javascript"> 
function createNew_Success() { 
$('.button').button(); 
} 
</script> 

這樣做是加載PartialView到一個div併成功加載後,它適用JQuery的造型對象與類按鈕

相關問題