$(document).ready()和部分视图加载

时间:2010-04-10 18:35:05

标签: jquery asp.net-mvc partial-views

我正在使用Asp.net mvc和jquery开发一个应用程序。我想对不同视图中的html元素使用相同的命名约定(类和id)。

如果我想异步加载部分视图,主视图中的$(document).ready()代码片段将失去实用性,因为jquery无法识别patial视图的html标记和css命名。我当然不想为每个视图编写相同的代码。解决这个问题最直接的方法是什么?

2 个答案:

答案 0 :(得分:9)

您可以使用.live(),例如:

$(".myClass").click(function() { });

成为这个:

$(".myClass").live('click', function() { });

.live()以不同的方式运作。 .click()绑定选择器运行时匹配的元素,通常为document.ready.live()通过生活在DOM根目录,监听事件冒泡并执行处理程序(如果气泡的目标与选择器匹配的事件)。

答案 1 :(得分:0)

我个人只是在$ .post周围使用我自己的包装器加载所有内容,并根据需要初始化内容。这也有助于统一处理错误,等待通知等。

第三方库通常也提供预处理ajax加载内容的方法。

部分视图不会调用document.ready,但是它们将评估head中脚本标记内的脚本,这样就可以强制调用部分视图特定脚本。

我使用的另一种方法是在表单上自定义html标记。 E.g。

<form custom-setup="MyCustomSetupFunc">

并且我的$ .post处理程序将检查此标记并调用此函数,并传递表单实例。这有助于在加载部分时缩小脚本的范围(当多个部分实例可以加载到同一页面时很有用。)