我有以下代码,它们是在控制台中键入并执行的代码,而在断点中,以下代码返回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元素