如果我正确理解 jQuery 链接,则列表中的第一个方法会执行,并且必须在下一个方法执行之前完成。因此,我有以下
$.fn.reportZebraStriper = function(options) {
console.log('reportZebraStriper()');
return true;
}
//onDom ready events
$(document).ready(function(){
$("#oom_display_options select")
.on("change", function(event){
$('#OOM_vs_Logged').loadUrl(//ajax method call in the global site.js file//);})
.reportZebraStriper();
})
在初始页面加载时,一切都按预期执行,我的控制台从 $.fn.reportZebraStripper() 获取打印输出。当我在“oom_display_options”下拉菜单中进行更改时,我的问题出现了,ajax 被触发,内容 DIV 被重新加载,但是 reportZebraStripe() 没有触发后记。
我在这里做错了什么?
编辑 1:其中 loadURL() 方法定义。它实际上只是 jQ 内置 .ajax() 方法的一个包装器;它在执行 ajax 时会显示一些动画等。
$.fn.loadUrl = function(url, dataAjax) {
var target = this;
target.addBlockLoadingDiv();
return $.ajax({
type: "POST",
url: url,
data: dataAjax,
success: function(data) {
if (data) {
target.html(data);
} else {
target.text("Unable to display requested data, sorry.");
}
},
error: function(err) {
target.html(err.response);
}
});
};
jQ 的 load() 方法似乎立即调用执行回调方法(除非我做错了);这很不幸。是我们需要的。
编辑 2:针对这个 logi 进行了一个 ajax 调用,当 ajax 调用的 'complete:' 被触发时它调用 $().reportZebraStripper() 方法。不是我正在寻找的解决方案,但它有效。