我有jQuery代码,在渲染视图时运行正常.但是,我希望在Ajax请求成功后运行相同的代码.jQuery最初是在文档准备好时执行的,但是我将它移动到它自己的函数中,因此可以调用它.该函数为一些标签元素添加了一些简单的类.这是我到目前为止:
$(function () {
afterLoad();
});
$.ajaxSetup({
success: function () {
afterLoad();
}
});
function afterLoad() {
// code to execute
}
Run Code Online (Sandbox Code Playgroud)
在发出简单的Ajax请求后,这不能正确执行:
$('#ajaxTest').load('<MVC Route>')
Run Code Online (Sandbox Code Playgroud)
部分视图返回正常,但afterLoad()
尝试在局部视图之前运行在DOM中.如果我再次执行相同的调用,afterLoad()
则运行(在前一个局部视图上),但是它会被新的局部视图覆盖.
有什么想法吗?另一种方法是没问题的,我正在寻找一个是在部署视图的Ajax请求之后运行站点级.js文件.母版页加载了site.js文件,我想在不重新加载文件的情况下执行它的代码(因为它已经被浏览器加载).另外,我不想强迫开发人员对他们的Ajax调用做任何不同的事情,所以它需要使用简单的.load()
等等.
Ami*_*haq 16
这就是我用来做你想做的事情:
如果需要访问XHR对象,也可以访问它.
//Global Ajax Complete
$("body").bind("ajaxSend", function(e, xhr, settings){
//Sent
}).bind("ajaxComplete", function(e, xhr, settings){
//Complete
}).bind("ajaxError", function(e, xhr, settings, thrownError){
//Error
});
Run Code Online (Sandbox Code Playgroud)
编辑:这是我的结构,一直在为我工作.
site.js
function afterLoad() {
// code to execute
}
$(document).ready(function(){
$("body").bind("ajaxComplete", function(e, xhr, settings){
afterLoad();
});
});
Run Code Online (Sandbox Code Playgroud)
创造了一个快速的小提琴.你是这个意思吗?
编辑二:
您可能希望在DOM上有一个监听器,用于<form>
显示然后运行您的afterLoad()
函数的任何元素.这可能是一次性能损失,所以我会小心翼翼地使用它.
我使用livequery来做到这一点
$('form').livequery(function(){
afterLoad();
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35857 次 |
最近记录: |