如何检查 JQuery 中是否存在元素

How do I check an element is exists in JQuery?

本文关键字:是否 存在 元素 JQuery 何检查 检查      更新时间:2023-09-26

如果元素存在,我必须为元素设置一个特定的值。

var a = jQuery("#abc");
if(a) {
   a.val("something");
}

为此,我必须检查a.length以检查元素是否退出。

如果我直接设置值而不检查元素是否存在会发生什么?

因为,如果我执行以下操作

jQuery("#abc").val("dfd");

当元素不存在时,我在 chrome 中没有收到任何错误。那么,我可以继续这样使用吗?

有什么解决方法吗?

感谢帮助!

如果我直接设置值而不检查元素是否存在会发生什么?

无。在空的jQuery对象(set(上调用jQuery方法不会导致问题,它只是不做任何事情。这是jQuery中使用的基于集合的概念的伟大之处之一。等效的DOM代码(document.getElementById("abc").value = "something";(抛出错误,但jQuery版本不会。

具体来说,如果 jQuery 集为空:

  • 调用 setter 方法(如 val 调用(变为无操作。

  • 调用 getter 方法(例如,var x = $("#foo").val();(返回值 undefined

  • 调用遍历方法(例如,var divs = $("#foo).find("div");(会给你一个新的空集。

只需要检查(使用你说的if (a.length),或者if (a[0])(你是否真的关心。

jQuery("#abc").val("dfd");

当元素不存在时,我在 chrome 中没有收到任何错误。那么,我可以继续这样使用吗?

是的。

jQuery的val()方法只是设置(或获取(每个匹配元素的值。如果没有匹配的元素,则没有要设置(或获取(的值。您无需先检查元素是否存在。

来自jQuery的val()文档:

说明:设置匹配元素集中每个元素的值。

如果没有匹配的元素,则不会发生任何事情。

尝试使用 -

jQuery("#abc").length > 0

是的,您可以放心地继续。JQuery 只是对选择器找到的所有元素执行一个函数 - 如果没有,它什么也不做。没有错误。