我正在使用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从动态加载的局部视图中工作?
答案 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样式应用于具有按钮类的对象