何时以及为什么检查jQuery是否存在元素

时间:2012-09-21 10:21:02

标签: jquery dom

我最近编写了一个小脚本,对无序列表进行了简单的显示/隐藏操作。

根据我的理解,如果有问题的元素存在,jQuery将只执行一个函数(因此它是'true')。所以没有实际的理由来检查元素的长度是否大于0,如果它有一个父节点是正文,依此类推。正确的吗?

如果上述内容准确无误,何时实际检查有帮助?

http://jsbin.com/ehicik/1/edit

4 个答案:

答案 0 :(得分:3)

这是正确的,jQuery只会尝试调用它的方法。

然而使用:

if($("#someElement").length) { ... Do Stuff };
如果你正在混合使用jQuery和JavaScript,那么

非常有用 - 我发现你经常无法使用jQuery实现所有功能,如果你对不存在的对象尝试JavaScript操作,你将会遇到脚本错误。

例如,我希望从“结算地址”复制“送货地址” - 但我的页面只会呈现“送货地址”,如果产品可以发货(下载的产品不需要发货) - 所以我检查是否“发货地址“在我在jQuery中做任何进一步的工作之前存在。

这只是一个粗略的例子,我很感激你也可以不渲染jQuery按钮 - 也就是说,如果你有一个中心的.js文件,它就更具相关性,因为你可能有一些更通用的JS将尝试在每个页面上运行。

这就是我检查现有对象时的情况。

答案 1 :(得分:2)

如果某个元素不存在,您想要执行的操作可能会级联到错误中,首先进行检查会很有帮助。一些相当微不足道的东西(比如显示/隐藏)可能不值得检查。

(虽然确保一切按预期工作并且优雅地失败是一种很好的编程习惯。检查可以帮助解决这个问题,或者至少是一个尝试...捕获语句。)

答案 2 :(得分:0)

这取决于元素实际存在对您/您的脚本的重要程度。假设你的脚本的其余部分取决于你需要从元素中检索的一些数据,并且该元素不存在,你会想知道它是一个行为。在这种情况下,检查显然非常有用。

在简单显示/隐藏的情况下,对此的需求可能很小。

答案 3 :(得分:0)

此处,length属性将返回$('#id')选择的元素数。 如果它返回零则表示没有匹配或选择的项目。

<script>
        $(document).ready(function () {
            alert($('#id').length);
        });
 </script>