Jquery 在带有对话框的加载回调中使用外部脚本?
我希望我能正确地解释这一点。我正在创建一个JQuery对话框,其中的内容是从HTML文件加载的。这个对话框包含一个表单,我需要用它执行额外的JS函数。我遇到的问题是,在我单击Jquery 在带有对话框的加载回调中使用外部脚本?,jquery,html,jquery-ui-dialog,anonymous-function,Jquery,Html,Jquery Ui Dialog,Anonymous Function,我希望我能正确地解释这一点。我正在创建一个JQuery对话框,其中的内容是从HTML文件加载的。这个对话框包含一个表单,我需要用它执行额外的JS函数。我遇到的问题是,在我单击#image\u edit之前,DOM中不存在HTML/选择器,因此我的JQuery上载脚本无法工作。 如您所见,我正在调用.load回调上的upload函数,但它不起作用。有没有更好/合适的方法来实现这一点 编辑: 移动.dialog和load()回调中的远程函数后,一切正常 uploadInterface.js (fun
#image\u edit
之前,DOM中不存在HTML/选择器,因此我的JQuery上载脚本无法工作。如您所见,我正在调用
.load
回调上的upload函数,但它不起作用。有没有更好/合适的方法来实现这一点
编辑:
移动.dialog
和load()
回调中的远程函数后,一切正常
uploadInterface.js
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
$(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");
}
});
});
});
uploadSetup.js
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
$(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");
}
});
});
});
dialogue.js
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
(function($) {
$(function(//removed, was not needed//) {
//upload functions//
});
})(window.jQuery);
$(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");
}
});
});
});
您尚未提供
load()
回调
浏览代码中的右大括号,您将看到只有一个参数传递给load()
,您正在将第二个参数传递给dialog()
链启动后,load()
方法将立即结束.fadeTo()
dialog的第二个参数被您误解为
load()
的回调。要在jQuery中加载脚本,您应该使用$.getScript()
因此,在您的load
回调函数中,您将有一个$.getScript()
来获取脚本,然后执行您想要的任何函数
$(".upload_div").load('../dialogues/content.html #upload_window', function() {
$.getScript( "uploadInterface.js" )
})...
...
...
uploadSetup函数中会有什么内容?为什么不能使用选择器和事件的常规功能。即使元素不存在,函数在加载后进入DOM后也会工作。为了便于管理,我想将它们分开,这样我可以在整个站点中单独使用它们。那么这些脚本是否加载在单独的js文件中?这是正确的,我将编辑问题,这些脚本将包含在您加载的html文件中?使用脚本标签,对吗?我明白你的意思。我修复了那个部分,但对话脚本仍然无法识别上载函数。似乎是范围问题?如果
upload script#1
是你的函数声明,那就全错了。不确定那里发生了什么,我澄清了问题。