0

我有一个 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 造成的。请帮我。

4

3 回答 3

6

来自 jQuery 文档:

通过使回调函数返回 false,我们可以在特定迭代中打破 $.each() 循环。返回非 false 与 for 循环中的 continue 语句相同;它将立即跳到下一次迭代。

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

于 2013-09-19T11:51:45.397 回答
0

Did you try an alert instead of a return ? Perhaps your ancestor is not "===" but just "==" to your tree.text(currNode) ?

于 2013-09-19T11:51:01.810 回答
0

您将不得不返回“假”。否则,它将进入下一次迭代。

于 2013-09-19T12:05:26.110 回答