【问题标题】:Check if Condition was true fro every iteration Jquery检查每次迭代Jquery的条件是否为真
【发布时间】:2016-01-13 11:45:43
【问题描述】:

我每个人都在运行 jQuery。我需要检查每次循环中的条件是否为真,那么它是否为真,否则即使它为假,也为假。

jQuery(".class span").each(function(){
   var attr_Val = parseInt($(this).attr("data-value"));
   if(parseInt(product_obj.length) == attr_Val)
   {
        // if it was true every time, then set its True. Else False    
   }
});

【问题讨论】:

  • 您想知道选择器匹配的所有元素的条件是否为真吗?如果是这样,each 不适合使用...您可能想要reduce

标签: jquery


【解决方案1】:
var myBool = true;
jQuery(".class span").each(function(){
  var attr_Val = parseInt($(this).attr("data-value"));
  if(parseInt(product_obj.length) != attr_Val)
  {
      myBool = false;   
  }
});

我将您的 == 更改为 !=,以捕捉每次它是错误的,因为如果结果为真,我不必做任何事情。

基本解释:我将 myBool 变量设置为 true,然后运行 ​​.each() 函数。如果任何结果不匹配,myBool 变为 false。

【讨论】:

    【解决方案2】:

    这就是你想要的。

    var isFound= true;
    jQuery(".class span").each(function(){
       if(parseInt(product_obj.length) != parseInt($(this).attr("data-value"))
       {           
            isFound = false; 
            //it works as break; in each loop
            //for better performance do break loop 
            return false;
       }      
    });
    

    【讨论】:

    • 是吗?这肯定不会从对each的调用中返回真/假@
    • 我对这个问题也有同样的理解。也许OP以错误的方式询问。
    【解决方案3】:

    您的问题需要进一步澄清,我怀疑您正在尝试做的是两件事之一

    1. 查找与选择器 .class span 匹配且具有与预定义值 (product_obj.length) 匹配的 data-value 属性的所有元素。

    2. 判断匹配选择器.class span的所有元素是否都匹配预定义值(product_obj.length)。

    两者都足够简单,但都不需要使用 jQuery each

    对于 1. 使用过滤器:

    var $matched = jQuery(".class span").filter(function(){
       var attr_Val = parseInt($(this).attr("data-value"));
       return parseInt(product_obj.length) == attr_Val;
    });
    

    对于2.使用过滤器和长度:

    var $elems = jQuery(".class span");
    
    var $matched = $elems.filter(function(){
       var attr_Val = parseInt($(this).attr("data-value"));
       return parseInt(product_obj.length) == attr_Val;
    });
    var allMatch = $elems.length === $matched.length;
    

    【讨论】:

      【解决方案4】:
      jQuery(".class span").each(function(){
         if(parseInt(product_obj.length) != parseInt($(this).attr("data-value"))
         {
             //if you enter here just ONE time it will return false
              return false;
         }
      });
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 2018-12-03
        • 2011-11-13
        • 2012-10-08
        相关资源
        最近更新 更多