Jquery 中判断元素是否存在

评论(5)

这个比较迷惑人,因为 Jquery 中默认所有的 Jquery 对象返回值都为 ture 也就是说当元素不存在时你的 ($(‘#fuck’))也是返回 ture ,所以在 Jquery 操作中不能简单的以对象返回的布尔值判断页面元素是否存在。

Jquery 空元素返回值

假设 #fuck 不存在页面上

if($('#fuck')){code.......};
//code 将被执行。
 
if($('#fuck').html()!==''){code.......};
//code 将被执行。
 
if($('#fuck').html!==''){code.......};
//code 将被执行。

Why ?

因为 Jquery 会自动忽略空元素,以免返回错误值。

为什么这么迷惑人

惯性思维,思维定式害死人啊。

那怎么在 Jquery 中检测元素是否存在?

假设 #fuck 不存在页面上

if($('#fuck').lenght>0){code.......};
//code 将不执行。

总结

遇到问题不要一个劲的自个琢磨,应该首先谷哥、度娘一下,也许我们走的是死胡同。
谨以此文,纪念一下我研究 Jquery 这个问题所逝去的青春。





转载请注明转自: Jquery 中判断元素是否存在

  1. @phoetry
    你这个办法更好,我咋没想到呢?专业js就是不一样!

  2. 或: if($(‘#fuck’)[0]){…}
    与length的效率的一样的.

  3. @无冷
    是个好办法,也唯有此办法。

  4. $(‘#fuck’).lenght>0 这个应该是很好的办法

  5. 自从人类有了谷哥和度娘后,什么疑难问题都可以去搜下了。