Javascript 函数在第一次触发后变得未定义

Javascript 函数在第一次触发后变得未定义,javascript,jquery,recursion,scope,Javascript,Jquery,Recursion,Scope,我有这样一段代码: function doSomething() { someVar.on("event_name", function() { $('#elementId').click(function(e) { doSomething(); }); }); } // and on document ready $(function () { $('#anotherElemId').click(functio

我有这样一段代码:

function doSomething() {
    someVar.on("event_name", function() {
        $('#elementId').click(function(e) {
            doSomething();
        });
    });
}

// and on document ready
 $(function () {
    $('#anotherElemId').click(function () {
        doSomething();
    });
});
我遇到的问题是,当我从绑定在document ready上的另一个RelemId click事件调用doSomething时,它会按预期工作,但从elementId click递归调用它不起作用


有什么想法吗?思考是我所缺少的一件小事。

someVar是对dom元素的实际jQuery引用吗?e、 g.$‘某物’

第二个问题是,不能将.click事件放在稍后要实例化的函数中。如果您试图只允许elementId在某个前一事件之后有一个click事件,请尝试测试tester变量是否为true:

var activated = false;

$(function () {
    $('#anotherElemId').click(function () {
        activated = true;
    });

    $('#secondElemId').on("event_name", function() {
        if (activated) {
            // code that happens only after #anotherElemId was clicked.
        }

    });
});

someVar是对dom元素的实际jQuery引用吗?e、 g.$‘某物’

第二个问题是,不能将.click事件放在稍后要实例化的函数中。如果您试图只允许elementId在某个前一事件之后有一个click事件,请尝试测试tester变量是否为true:

var activated = false;

$(function () {
    $('#anotherElemId').click(function () {
        activated = true;
    });

    $('#secondElemId').on("event_name", function() {
        if (activated) {
            // code that happens only after #anotherElemId was clicked.
        }

    });
});

'elementId'。clickfunctione{必须是$'elementId'。clickfunctione{同时运行doSomething将在firebug中显示返回值,因为您没有返回任何它应该显示未定义的内容,请尝试返回'DidSomething';您确定没有将doSomething名称用于其他内容吗?为什么要递归地将事件处理程序添加到同一元素中?这看起来不正确……无论如何,您应该提供一个更复杂的以演示的形式完成示例。我确信会有比您演示的内容更多的内容。@GabrielSantos我问题中的拼写错误。修复了'elementId'。单击函数{必须是$'elementId'。单击函数{同时运行doSomething将在firebug中显示返回值,因为您没有返回任何它应该显示未定义的内容,请尝试返回'DidSomething';您确定没有将doSomething名称用于其他内容吗?为什么要递归地将事件处理程序添加到同一元素中?这看起来不正确……无论如何,您应该提供一个更复杂的以演示的形式完成示例。我确信会有比您演示的内容更多的内容。@GabrielSantos在我的问题中的拼写错误。修复了。someVar不是dom元素。请参阅我的注释,其中包含指向pastebin的链接。在执行控制台日志语句时触发了click事件。同时,我已将其更改为有两个单独的connect/discon链接在setupSocket函数外部附加的nect ID和事件。似乎所有内容都被触发,但在断开连接后的第二次连接中,我的服务器拒绝连接。非常感谢您的帮助,试图解决此问题。还有更新。我试图用socket.connect重新创建连接,但我应该使用相同的连接对象并根据调用socket.socket.disconnect。因此,真正的问题与我的问题无关,我的调试应该更彻底。someVar不是dom元素。请查看我的注释,并链接到pastebin。在执行控制台日志语句时触发了click事件。同时,我已将其更改为2个链接独立的连接/断开ID和附加在setupSocket函数外部的事件。似乎所有内容都被触发,但在第二次连接时,断开连接后,我的服务器拒绝连接。非常感谢您的帮助,试图解决此问题。还有一个更新。我正在尝试使用socket重新创建连接。connect,b但是我应该使用相同的对象并根据调用socket.socket.disconnect。因此,真正的问题与我的问题无关,我的调试应该更彻底。