第一次触发后,功能变为未定义

时间:2012-08-26 23:43:56

标签: javascript jquery recursion scope

我有一个像这样的代码块:

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

// and on document ready
 $(function () {
    $('#anotherElemId').click(function () {
        doSomething();
    });
});

我遇到的问题是,当我从doSomething()点击事件(在文档就绪时已绑定)调用anotherElemId时,它按预期工作,但是从{{1}递归调用它点击不起作用。

有什么想法吗?思考是我无法想象的微不足道的事情。

1 个答案:

答案 0 :(得分:0)

someVar是对dom元素的实际jQuery引用吗? (例如$('#someitem'))

第二个问题是你不能将.click事件放在你想稍后实例化的函数中。如果您尝试仅允许#elementId在之前的某个事件之后发生单击事件,请尝试测试test变量是否为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.
        }

    });
});