Jquery 在带有对话框的加载回调中使用外部脚本?

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

我希望我能正确地解释这一点。我正在创建一个JQuery对话框,其中的内容是从HTML文件加载的。这个对话框包含一个表单,我需要用它执行额外的JS函数。我遇到的问题是,在我单击
#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
是你的函数声明,那就全错了。不确定那里发生了什么,我澄清了问题。