2011-08-28 67 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的造型对象与类按钮

相关问题