加载jQuery对话框后运行一个函数

HTX*_*TX9 13 jquery jquery-ui jquery-ui-dialog

这可能是一个简单的问题,但我无法让它发挥作用.我正在使用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");
    });
});
Run Code Online (Sandbox Code Playgroud)

我有一个函数myFunction(),我想在HTML加载到对话框时调用.在环顾四周之后,我尝试在.load中指定函数,如下所示:

.load(this.href, myFunction());
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用open事件,如下所示:

open: myFunction(),
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Pet*_*ter 30

解决方案#1:

.load(this.href, myFunction);
Run Code Online (Sandbox Code Playgroud)

解决方案#2:

.load(this.href, function(){
  myFunction();
});
Run Code Online (Sandbox Code Playgroud)

解决方案#3(优先):

open: myFunction,
Run Code Online (Sandbox Code Playgroud)

解决方案#4:

open: function(){
  myFunction();
}
Run Code Online (Sandbox Code Playgroud)

这是为什么?

var foo = myFunction(); // `foo` becomes your function return value
var bar  = myFunction; // `bar` becomes your function
bar();
Run Code Online (Sandbox Code Playgroud)

您的代码应如下所示:

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

  • 解决方案#3对我不起作用..不知道为什么,也许是jquery版本?解决方案#4为我工作,使用构造:function(){myFunction();} ..谢谢! (2认同)