有关过滤器功能的Javascript功能

时间:2019-02-13 12:18:58

标签: javascript jquery

我有以下代码,这些代码是在控制台中键入并执行的代码,而在断点处,以下代码返回0:

$(target).children().filter(function(el){
    return $(el).attr("standard" == '')
}).length

以下返回true:

$($(target).children()[0]).attr("standard") == ''

为什么第一个代码块不返回计数/长度为1,因为集合的第一项满足过滤器函数的委托?

3 个答案:

答案 0 :(得分:0)

有一个放错了位置的支架。更新自

$(el).attr("standard" == '')

$(el).attr("standard") == ''

答案 1 :(得分:0)

$(target).children().filter(function(el){return $(el).attr("standard" == '')}).length

这不会返回1,因为.attr("standard")返回与该属性关联的值。您无法在其中执行计算/比较。您必须将属性值放在一个单独的变量中,然后进行比较。

或者只是修正您的错字

attr("standard") == ''

答案 2 :(得分:0)

我不小心忘记了括号,该括号实际上是代码的一部分,但现在我将其修复:

这不起作用:

$(target).children().filter(function(el){ return $(el).attr("standard") == '' }).length

这样做:

$(target).children().filter(function(){ return $(this).attr("standard") == '' }).length

也是如此:

$(target).children().filter(function(i,el){ return $(el).attr("standard") == '' }).length

问题在于,委托的第一个参数自动引用了索引,而不引用了JQuery元素