我希望我能正确解释这一点。我正在创建一个JQuery对话框,其中的内容是从HTML文件加载的。此对话框包含一个表单,我需要执行其他JS功能。我遇到的问题是,在我点击#image_edit
之前,DOM中没有HTML /选择器存在,所以我的JQuery上传脚本不起作用。
正如您所看到的,我正在调用.load
回调上的上传功能,但它不起作用。有没有更好/更合适的方法来做到这一点?
编辑:
在.dialog
回调中移动load()
和远程函数后,一切都按预期工作。
uploadInterface.js
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
uploadSetup.js
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
dialogue.js
$(function(){
$('#image_edit').click(function() {
$(".upload_div").load('../dialogues/content.html #upload_window', function() {
$.getScript("js/uploadInterface.js"); //added remote script here//
$.getScript("js/uploadSetup.js"); //added remote script here//
}).fadeTo("slow", 1).dialog({
title: "Upload an image",
width: "320px",
position: { my: 'top', at: 'top+150' },
resizable: false,
draggable: false,
modal: true,
show: "fadeIn",
hide: "fadeOut",
create: function(event, ui) {
var widget = $(this).dialog("widget");
$(".ui-dialog-titlebar-close span", widget)
.removeClass("ui-icon-closethick")
.addClass("ui-icon-close-custom");
}
});
});
});
答案 0 :(得分:1)
您尚未提供load()
回调。
遍历代码中的结束括号,您将看到只有一个参数传递给load()
,并且您将第二个参数传递给dialog()
。
load()
方法会在您的链开始.fadeTo()
对话框的第二个参数是你误解为load()
的回调
答案 1 :(得分:1)
要在jQuery中加载脚本,您应该使用$.getScript()
因此,在load
回调函数中,您将获得$.getScript()
来获取脚本,然后执行您想要的任何函数。
$(".upload_div").load('../dialogues/content.html #upload_window', function() {
$.getScript( "uploadInterface.js" )
})...
...
...