【问题标题】:A Function Which Returns Parent Functions返回父函数的函数
【发布时间】:2015-02-13 02:12:23
【问题描述】:

我遇到了一些代码问题。基本上,我使用 jquery 在单击按钮时运行回调函数。我的问题是整个收听设置在另一个函数中。当 jquery 事件触发时,我想返回父函数,但我不知道如何。

谢谢,

-亚历克斯

function placeObject(object) {

        $("#button").click( function() { 

            $(".fields").remove()   
            $("#curser" + object).remove()  
            $("#curser" + object).css("pointer-events","none");
            $("#curser" + object).css("display","none")
            $("#submitObject").css("display","none")
            $("#cancelCreation").css("display","none")
            $(".newObjectButton").css("display", "inline")
            zooming = true

        });

}

更新:

这个函数被这个函数调用:

function createObject(object) {

    $("#button").css("display","inline")

    if (object == "one thing") {
        placeObject(object)
    }
    else if (object == "another thing") {
        differentFuntion(object)
    }

}

这个函数被这个调用:

$(".newObjectButton").click( function() {

    createObject($(this).attr("id"))

}); 

为了澄清我的确切目标:

我不想让函数返回这样的函数:

funtion a() {
    return b
}
funtion b() {
    alert("b")
}

结果将是一个显示“b”的警告框

我希望函数 a 的返回值是一个返回封装父函数 b 的信号,如下所示:

function a() {

    function b() {
         return return //whatever value forces the parent function to return
    }

}

【问题讨论】:

  • 所以您想从click 事件处理程序中返回parentFunction?你可以使用return parentFunction 来做到这一点,但它只会返回给内部 jQuery 调用者。
  • 我想这是我的问题的一部分。在上下文中,我在图像上放置了一个精灵。为了停止放置,需要发生以下两件事之一:1 提交 2 取消。单击取消按钮时会触发 jQuery 事件,此外,我希望处理提交或取消返回的父函数。
  • 好吧,我想我们可能需要更多的上下文代码,比如parentFunction 的调用者以及返回函数的预期用途。
  • 听起来像是X-Y 问题。你应该从一开始就用文字解释你想要实现的目标,而不是你想从函数返回什么
  • 你们是对的,问题不是很清楚。对不起。不过,今晚我一直盯着这个问题太久了。我明天早些时候会进行彻底的更新。我希望你们都坚持下去并继续提供帮助。

标签: javascript jquery callback return watch


【解决方案1】:
function a(){
 b();
}

function b(){
 console.log(arguments.callee.caller);
};

函数 b 将记录:

function a(){
 b();
}

【讨论】:

    【解决方案2】:

    函数是对象,因此它们可以用作返回值。例如,

    var setup = function() {
      alert(1);
      return function() {
        alert(2);
      };
    };
    
    var my = setup(); // alerts 1
    my(); // alerts 2
    

    【讨论】:

    • 非常感谢您的精彩解释,但它并没有完全实现我的意思。我会更新更准确的措辞。
    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 2023-03-23
    • 2010-10-01
    • 2021-10-02
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多