如何从嵌套的jquery回调函数返回true / false

时间:2013-08-09 06:27:56

标签: javascript jquery jquery-ui jquery-plugins

我正在尝试验证包含两个jQuery回调循环的javascript函数内的元素。基于条件我想从内部jQuery循环返回true / false,并且应该将其发送回javascript的调用方法。如果内循环的结果是true,则循环应该停止运行。

if(validate(key)){
}
else{
}
function validate(key) {
    $jquery.each(function(){
        $jquery.each(function(){
            if(){
                return true;
            }
            else{
                return false}
        })
    })
}

4 个答案:

答案 0 :(得分:5)

我认为这正是您所寻找的,这将在满足true条件时停止两个循环

function validate(key) {
    var result = false;
    $jquery.each(function(){
        $jquery.each(function(){
            if(){
                result = true;
                return false;//break inner loop
            }
        });
        if(result)
            return false; //break outer loop if we got true in inner
    });
    return result;
}

Demo fiddle 您可以打开控制台,看到在满足真实条件时循环停止

答案 1 :(得分:1)

function validate(key) {
    var result;
    $jquery.each(function() {
        $jquery.each(function() {
            if () {
                result = true;
            } else{
                result = false
            }
            return false;
        });
        if (typeof result !== 'undefined') {
            return false;
        }
    });
    return result;
}

答案 2 :(得分:1)

jQuery docs给出了一个类似的例子。文档声明'你可以通过返回false来停止回调函数中的循环。'

所以听起来你需要扭转你的术语,并在你希望循环停止时返回false。

假设我们有一堆div元素,其中嵌套了li个元素。如果我们想要在内部循环到达具有特定内容的li时停止它,我们可以这样做:

  $( "div").each(function ( index, domEle) {
      $( "li", domEle ).each(function ( index, domEle2) {
        var areWeDone;
        $( domEle2 ).css( "backgroundColor", "yellow" );
              if ( $( domEle2 ).is(":contains('Here')") ) {
                result = true;
                return false;
              } else {
                result = false;
                return true;
              }
      });

      if (result == true) {
          return false;
      } 

  });

这是full jsFiddle

答案 3 :(得分:-1)

    function validate(key) {
    var result;
    $jquery.each(function() {
        $jquery.each(function() {
            if () {
                result = true;

            } else{
                result = false;

            }
            return result;
        });
    });

}