jquery - 加载 jQuery 对话框后运行函数

标签 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");
    });
});

我有一个函数 myFunction(),当 HTML 加载到对话框中时我想调用它。经过一番查找后,我尝试在 .load 中指定该函数,如下所示:

.load(this.href, myFunction());

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

open: myFunction(),

我做错了什么?

最佳答案

解决方案#1:

.load(this.href, myFunction);

解决方案#2:

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

解决方案#3(首选):

open: myFunction,

解决方案#4:

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...
})

关于jquery - 加载 jQuery 对话框后运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337271/

相关文章:

javascript - 如何动态地将 jquery ui 事件处理程序添加到动态创建的按钮?

jquery - 在 jQuery UI 对话框中使用 DataTables TableTools 时出现问题

javascript - jQuery UI 对话框中的 jQuery 验证不起作用?

javascript - 如何将元素传递给 jQuery UI 对话框?

javascript - 在样式表中指定多 css 类

jquery - 向 jquery 脚本添加延迟

jquery - Ajax/Asp.Net 更新面板问题

javascript - Jquery将html值附加到输入框,但不附加跨度内的文本

javascript - Jquery UI 可排序在停止时调用两个函数

jquery-ui - 可拖动和可扩展的遏制