如何使用jQuery验证DOM中是否存在元素?

Tor*_*ups 23 jquery

通常在JavaScript中我会执行类似下面的操作来验证元素是否存在:

if (document.getElementById('lblUpdateStatus')) {
    $("#lblUpdateStatus").text("");
}
Run Code Online (Sandbox Code Playgroud)

但是,使用jQuery - 我怎么能做同样的事情?

Dan*_*n F 30

$ 返回一个匹配元素的数组,所以检查length属性,你就可以了

if ($('#lblUpdateStatus').length) {
    $("#lblUpdateStatus").text("");
}
Run Code Online (Sandbox Code Playgroud)


Ton*_* L. 17

get方法返回匹配的DOM元素:

if($("#lblUpdateStatus").get(0)){
    $("#lblUpdateStatus").click(function () { ... });
}
Run Code Online (Sandbox Code Playgroud)

但我不确定它是否是一种快速的方法.


ban*_*ang 16

问题是如果元素存在,jQuery将只执行请求的操作:-),所以你只需要:

$("#lblUpdateStatus").text("");
Run Code Online (Sandbox Code Playgroud)


Tom*_*han 11

我认为没有理由仅仅为了它而使用jQuery.在$('#lblUpdateStatus')将基本直奔document.getElementById('lblUpdateStatus'),为选择中有一个锚,所以你没有真正得到什么.此外,仅仅检查DOM对象是否存在,将其包装在jQuery对象中会产生相当多的开销.

另一方面,如果只是更改对象的text属性是你想要做的,那么如果使用jQuery,则不需要检查它是否存在.

if (document.getElementById('lblUpdateStatus')) {
    $("#lblUpdateStatus").text("");
}
Run Code Online (Sandbox Code Playgroud)

将做与刚刚完全相同的事情

$("#lblUpdateStatus").text("");
Run Code Online (Sandbox Code Playgroud)


Ian*_*non 9

从jQuery 1.4开始,您可以使用$.contains().

var test = $("<div>");
$.contains(window.document, test[0]);  // false

$("body").append(test);
$.contains(window.document, test[0]);  // true
Run Code Online (Sandbox Code Playgroud)