2

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

据我了解,jQuery 只会在有问题的元素存在时执行一个函数(因此如果它是“真”)。所以没有实际的理由去检查元素的长度是否大于 0,它是否有一个父节点是 body 等等。正确的?

如果以上是准确的,那么这种检查实际上何时会有所帮助?

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

4

4 回答 4

3

没错,jQuery 只会尝试调用的方法(如果它存在)。

但是使用:

if($("#someElement").length) { ... Do Stuff };

如果您正在混合使用 jQuery 和 JavaScript,这将非常有用 - 我发现您通常无法使用 jQuery 实现所有功能,并且如果您尝试对不存在的对象进行 JavaScript 操作,则会出现脚本错误。

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

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

所以那是我检查存在的对象的时候。

于 2012-09-21T10:30:26.020 回答
2

如果您想要执行的操作在元素不存在的情况下可能会级联成错误,那么首先进行检查会很有帮助。一些相当琐碎的事情(如显示/隐藏)可能不需要检查。

(尽管确保一切按预期工作并优雅地失败是一种很好的编程习惯。检查会对此有所帮助,或者至少是 try...catch 语句。)

于 2012-09-21T10:23:08.930 回答
0

这取决于元素实际存在对您/您的脚本有多重要。假设您的脚本的其余部分取决于您需要从元素中检索的一些数据,而该元素不存在,您会想了解它并对其采取行动。在这种情况下,检查显然非常有用。

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

于 2012-09-21T10:24:43.907 回答
0

这里的长度属性将返回已被选择的元素的数量$('#id')。如果它返回零,则表示没有匹配或选择的项目。

<script>
        $(document).ready(function () {
            alert($('#id').length);
        });
 </script>
于 2012-09-21T10:26:06.113 回答