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

时间:2014-10-09 22:51:40

标签: jquery html jquery-ui-dialog anonymous-function

我希望我能正确解释这一点。我正在创建一个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");
            }
        });
    });
});

2 个答案:

答案 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" )
})...
...
...