传递"返回false"jQuery中函数之间的关系

Passing "return false" between functions in jQuery

本文关键字:quot 之间 关系 函数 false 返回 传递 jQuery      更新时间:2023-09-26

我知道这个标题是一个糟糕的标题,我不知道有什么方法来解释这一点,除了用一个例子:

$('form').submit(function(){
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      return false;
  });
});

然而,"return false"返回的是带有false的".each()"。我如何将它"传递"到"。submit()"?

如果您正在查找表单中有类错误的任何输入,您可以:

return $(this).find('input.error').length == 0;

简化一下。如果您发现该类的一个实例,您似乎希望返回false,可以这样做:

$('form').submit(function()
{
    return $(this).find('input').hasClass('error') == false;
});

你也可以使用NOT操作符,但是在选择器中看起来很难看。

因为.each()方法调用了一个回调函数,你不能从.each()回调内部的提交返回。所以,你必须为你的返回值设置一个变量,然后再返回它。

$('form').submit(function(){
  var retVal = true;
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      retVal = false;
      return false;
  });
  return(retVal);
});

你也可以解决这个问题,让选择器引擎做你的搜索,而不是迭代自己与.each(),像这样:

$('form').submit(function(){
  if ($(this).find('input.error').length != 0) {
      return(false);
  }
});

或者更简洁一点:

$('form').submit(function(){
      return($(this).find('input.error').length == 0);
});

在循环外声明一个变量,并在退出循环前设置,然后返回该变量的值:

$('form').submit(function(){
  var result = true;
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      result = false;
      return false; // exit loop
  });
  return result;
});
$('form').submit(function(){
  var allok = true;
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      allok  =false;
  });
  return allok;
});