当前位置: 代码迷 >> JavaScript >> 关于过滤器功能的 Javascript 功能
  详细解决方案

关于过滤器功能的 Javascript 功能

热度:82   发布时间:2023-06-13 11:34:27.0

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

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

以下返回true:

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

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

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

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

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

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

或者只是修正你的错字

attr("standard") == ''

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

这不起作用:

$(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 元素

  相关解决方案