Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载jQuery对话框后运行函数_Jquery_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

加载jQuery对话框后运行函数

加载jQuery对话框后运行函数,jquery,jquery-ui,jquery-ui-dialog,Jquery,Jquery Ui,Jquery Ui Dialog,这可能是一个简单的问题,但我无法让它发挥作用。我正在使用jQuery对话框来显示从我网站的另一个页面加载的表单。用户单击一个链接,就会启动对话框。我试图做的是在将HTML加载到对话框后运行一个函数。以下是加载对话框的代码: $(document).ready(function () { $(".openDialog").live("click", function (e) { e.preventDefault(); $("#dialogBox").dia

这可能是一个简单的问题,但我无法让它发挥作用。我正在使用jQuery对话框来显示从我网站的另一个页面加载的表单。用户单击一个链接,就会启动对话框。我试图做的是在将HTML加载到对话框后运行一个函数。以下是加载对话框的代码:

$(document).ready(function () {
    $(".openDialog").live("click", function (e) {
        e.preventDefault();

        $("#dialogBox").dialog({
            title: $(this).attr("data-dialog-title"),
            close: function() { $(this).remove() },
            modal: true
        })
        .load(this.href);
    });

    $(".close").live("click", function (e) {
        e.preventDefault();
        $(this).closest(".dialog").dialog("close");
    });
});
我有一个函数myFunction(),我想在将HTML加载到对话框中时调用它。在四处查看了很久之后,我尝试在.load中指定函数,如下所示:

.load(this.href, myFunction());
open: myFunction(),
我还尝试使用开放事件,如下所示:

.load(this.href, myFunction());
open: myFunction(),
我做错了什么?

解决方案#1:

.load(this.href, myFunction);
.load(this.href, function(){
  myFunction();
});
open: myFunction,
open: function(){
  myFunction();
}
解决方案#2:

.load(this.href, myFunction);
.load(this.href, function(){
  myFunction();
});
open: myFunction,
open: function(){
  myFunction();
}
解决方案#3(首选):

.load(this.href, myFunction);
.load(this.href, function(){
  myFunction();
});
open: myFunction,
open: function(){
  myFunction();
}
解决方案#4:

.load(this.href, myFunction);
.load(this.href, function(){
  myFunction();
});
open: myFunction,
open: function(){
  myFunction();
}

为什么呢

var foo = myFunction(); // `foo` becomes your function return value
var bar  = myFunction; // `bar` becomes your function
bar();

您的代码应该如下所示:

$("#dialogBox").load('http://example.com').dialog({
  title: $(this).attr("data-dialog-title"),
  close: function() { $(this).remove() },
  modal: true,
  open : myFunction // this should work...
})

没有一个解决方案对我有效。我猜这是因为对话框打开完成后,
open
回调没有被调用。我必须使用
setTimeout
使它工作

$('#dialogBox').dialog('open');

setTimeout(function(){
    // myFunction();
},100);
这显然取决于jQuery UI-v1.11.4的
myFunction

中的内容,下面代码片段中的“完成”不再起作用:

show: {
    effect: 'clip',
    complete: function() {
        console.log('done');
    }
},
适用于jQuery UI的解决方案-v1.11.4.:

按照建议,使用$(this).parent().promise().done:


希望这能有所帮助。

我遇到了一个问题,我加载了一个外部页面,还想在加载的页面上运行一个函数。显然,使用open:在dialog方法中不起作用

jQuery("#pop-sav").load('/external/page', my_function_name );

jQuery("#pop-sav").dialog({
      resizable: false,
      width:'90%',
      autoReposition: true,
      center: true,
      position: 'top',
      dialogClass: 'pop-dialog pop-sort'
});

my_函数\u name必须没有括号,只有函数本身的名称才能工作。我不确定这到底是怎么回事,但如果你确实弄明白了,请在评论中告诉我

您还可以使用焦点事件,该事件将在对话框打开并获得焦点后触发


open:myFunction应该可以工作(没有参数,或者只会立即调用它,而不是在对话框打开时)。如果没有,控制台中是否有任何错误?我已经尝试了所有四种解决方案,但仍然无法使其工作。控制台中也没有错误。。。我要调用的函数位于不同的.js文件中,但这两个文件都在页面上引用。我不知道使用myFunction()和myFunction之间的区别。谢谢你的澄清!解决方案3对我不起作用。。不知道为什么,也许是jquery版本?解决方案#4适用于我,使用了以下构造:function(){myFunction()}..谢谢!我也不得不利用这段时间。打开对话框后,我将添加zoomIn()图像功能。