从mvc3中的ajax加载的局部视图触发jquery

时间:2011-08-28 19:58:38

标签: jquery asp.net-mvc-3

我正在使用ajax将局部视图加载到主视图中,但很难在局部视图中触发jquery。

基本上我试图允许加载部分视图,其中包含一个允许我打开对话窗口的按钮。

我的局部视图包含这一小块js

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

</script>

然而它永远不会被解雇。

我需要做什么才能让jquery从动态加载的局部视图中工作?

2 个答案:

答案 0 :(得分:4)

您的代码以$('#edit-note').click(function () {开头,在文档准备好后运行。在那个时间点,您还没有加载部分视图,因此$('#edit-note')是一个空集合。

jQuery允许您通过其live方法将事件绑定到页面上尚未存在的元素:

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

答案 1 :(得分: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样式应用于具有按钮类的对象