点击后从子功能返回父功能

时间:2012-08-24 14:24:40

标签: javascript jquery

如何在点击时从子功能返回父功能?这是一个示例代码:

function returnFunction() {

    var output = false;

    $('a').click(function() {

       output = true;

    });

    return output;    

}

var result = returnFunction();

结果将始终为false,因为在运行代码时未发生单击。我怎么能做这个工作呢?

我的目的是调用弹出对话框,我希望在一个可以轻松加载的函数中包含所有逻辑 - 包括确认对话框的单击事件。

在脚本的其他地方,我会以这种方式调用它,例如:

// Menu click triggers the dialog
$('a').click(function(e) {
    // The function displays the dialog and returns the click events of the dialog
    var result = returnFunction();
    // If result was false, we'll prevent the menu access, for example
    if (!result) {
        e.preventDefault();
    }
});

我知道jQuery UI对话框插件。但我现在想要实现这一目标。

感谢。

2 个答案:

答案 0 :(得分:2)

过度简化是:

执行javascript时,一切都停止(包括滚动和点击超链接)。这意味着在有人点击链接之前,您无法“暂停”脚本。

解决此问题的典型方法是回调函数:

function my_callback(some, arguments) {
    // you can do whatever in here: an ajax load, set a global variable, change some of the page, ...
    console.log(some, arguments);
    alert(some + " " + arguments);
}

function returnFunction(callback, param) {
    var output = false;
    $('a').click(function() {
       callback(param, "world");
    });
}

returnFunction(my_callback, "hello");

演示http://jsfiddle.net/UnBj5/

编辑:

我确实提到了全局变量,因为它们是一个选项,但它们通常是糟糕的风格。尽可能尝试使用其他方法。

如果您需要更多帮助,请提供您尝试做的更多详细信息。

答案 1 :(得分:0)

尝试使用参数。将参数发送到显示警报框的函数,根据参数显示不同的弹出警报,您尝试执行的操作将无法正常工作,因为它基本上是鸡蛋问题。