Javascript函数不在循环内返回

时间:2013-09-19 11:48:08

标签: javascript jquery

我有一个JavaScript函数:

function nodeExists(text, ancestor, tree, generationCount) {

tree.findByText(text).each(function (index, element) {

    var gen = generationCount;
    var currNode = element;
    while (gen !== 1) { // 1: node itself

        currNode = tree.parent(currNode);
        gen--;
    }

    if (tree.text(currNode) === ancestor)
        return currNode; // Even if condition is met, control continues looping       
})       

return null;
//return ($.inArray(ancestor, gArr) !== -1) ? true : false;
}

即使tree.text(currNode) === ancestor是真实的,调试功能也不会退出循环。是Jquery .each导致它。请帮帮我。

3 个答案:

答案 0 :(得分:6)

来自jQuery文档:

  

我们可以在特定的迭代中打破$ .each()循环   回调函数返回false。返回非假是与a相同   在for循环中继续声明;它将立即跳到下一个   迭代。

您没有返回false,因此循环将继续。

答案 1 :(得分:0)

您是否尝试过警报而非返回?也许你的祖先不是“===”而只是“==”你的tree.text(currNode)?

答案 2 :(得分:0)

你必须返回'false'。否则,它将进入下一次迭代。