Js里的length问题

//这段Js代码怎么理解呢?
 
if ($("#zl_" + row.Id + "").length < 1) {}

//前面的 $("#zl_" + row.Id + "") 不是获取到该控件么,怎么能 .length 呢?
阅读 4.8k
7 个回答

功能: 用来判断这个节点是否存在

$("#zl_" + row.Id + "")  // 用来获取id为"#zl_" + row.Id + ""的节点对象
$("#zl_" + row.Id + "").length  // 用来判断这个节点是否存在的条件

举个简单的例子,

jquery下
<div id="hello"></div>
console.log($("#hello"), typeof $("#hello"))

输出结果如下,是有length的且为1
clipboard.png

jquery下
但如果<div id="nihao"></div>
console.log($("#hello"), typeof $("#hello"))

结果为如下,对象里是没有length的,所以length为0

clipboard.png

选择器用了id,所以该标签最多长度为1,因为id是唯一的,如果1<1,不成立,不执行。如果0<1,成立,执行if代码块里面语句

这是jQuery对象的length属性,返回的是选择器匹配到的元素总个数。

ps: 题主理解错了,$(...)返回的并不是dom对象,而是jQuery封装的实例,length是jQuery对象上的方法,$(...)[n]才会返回dom对象。

$('body') instanceof jQuery;  // true
$('body')[0] instanceof HTMLElement; // true

默认是没有length属性,jquery源码有在获取dom节点时写入length属性

$选择器如果没有取到空间直接返回为null这里在.lenght会出错 只有类选择器里有length这个属性 如果id选择器取到控件还是没有length属性

你console.log(($("#zl_" + row.Id + ""))看看,其实是有length属性的

可以获取啊,你是row.id是怎么定义的

$("div").length // 188

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题