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

how to return true/false from nested jquery callback functions

本文关键字:返回 true false 函数 回调 嵌套 jquery      更新时间:2023-09-26

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

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

我认为这就是您想要的,当满足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;
}

演示小提琴您可以打开控制台,看到当满足真实条件时循环停止

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;
      } 
  });

这是完整的jsFiddle。

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;
}
    function validate(key) {
    var result;
    $jquery.each(function() {
        $jquery.each(function() {
            if () {
                result = true;
            } else{
                result = false;
            }
            return result;
        });
    });
}