【问题标题】:jQuery simplest way to check if an element existsjQuery检查元素是否存在的最简单方法
【发布时间】:2011-09-14 08:07:17
【问题描述】:

我用这种方式用 jQuery 检查元素:

var x = $("div.myElement");
if (x.length > 0) {
    x.show();
}

但我真的不喜欢if。有没有更简单的方法?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    答案直接来自jQuery FAQ。请记住:发帖前先搜索一下,jQuery Documentation 既简单又完整。

    使用选择器返回的 jQuery 集合的 length 属性:

    if ($("div.myElement").length)
        $("div.myElement").show();
    

    FAQ 中的另一个重要内容:并不总是需要测试元素是否存在。

    如果您只编码$("div.myElement").show(),则该元素仅在存在时才会显示(当然,嗯?),如果不存在,则不会发生任何事情(没有错误)。 jQuery methods are writen to not raise errors when the selector result is empty.

    【讨论】:

    • 你说得对,我之前真的会搜索文档...对不起。但是,如果我的选择器结果为空,我如何确定某些方法不会引发错误?
    • 好答案;但是,添加该测试有一个非常重要的原因:如果您不对空集合执行操作,则会获得性能提升。证明:jsperf.com/…
    • 说实话,我不确定是否所有的 jQuery 方法都这样。但我有一种强烈的感觉,它是一般的。至少在调用任何其他方法之前我从未遇到错误,例如showhideanimatesiblingsfind 等。
    • @Adam,很好的测试!这有点像预期的那样:在调用方法之前进行检查总是比调用并等待它在那里执行检查更具执行性。虽然性能提升不是很大,但我会牢记这一点,非常好!
    • 非常感谢!解释很有趣。
    【解决方案2】:

    你可以这样做:

    if ($("div.myElement").is('*')) {
      ...do some stuff...
    }
    

    或者:

    if ( $("div.myElement")[0] ) {
      ...do some stuff...
    }
    

    问题已回答therehere

    【讨论】:

    • 拜托,你能解释一下这个.is("*")是什么意思吗?性能好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2011-07-08
    • 2014-10-20
    • 2014-02-17
    • 2011-06-26
    • 2011-07-14
    • 2011-03-25
    相关资源
    最近更新 更多