单击从子函数返回父函数

Return parent function from child function on click

本文关键字:函数 返回 子函数 单击      更新时间:2023-09-26

如何在单击时从子函数返回父函数?下面是一个示例代码:

function returnFunction() {
    var output = false;
    $('a').click(function() {
       output = true;
    });
    return output;    
}
var result = returnFunction();

结果总是错误的,因为在运行代码时没有发生点击。我怎么能做到这一点呢?

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

在脚本的其他地方,我会这样称呼它,例如:

// 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();
    }
});

我知道jQueryUI对话框插件。但我现在想在没有它的情况下实现这一目标。

谢谢。

它的过度简化是:

在执行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/

编辑:

我提到全局变量是因为它们是一种选择,但它们通常是糟糕的风格。如果可能的话,尽量使用其他方式。

如果你想得到更多的帮助,请提供你正在尝试做什么的更多细节。

请尝试使用参数。向显示警报框的函数发送一个参数,根据参数显示不同的弹出警报,你试图做的事情不会奏效,因为这基本上是一个鸡蛋问题。