如何使用jQueryvalidationDOM中是否存在元素?

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

if (document.getElementById('lblUpdateStatus')) { $("#lblUpdateStatus").text(""); } 

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

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

 if($("#lblUpdateStatus").get(0)){ $("#lblUpdateStatus").click(function () { ... }); } 

但我不确定这是否是一种快速的方法。

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

 if ($('#lblUpdateStatus').length) { $("#lblUpdateStatus").text(""); } 

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

 $("#lblUpdateStatus").text(""); 

我认为没有理由仅仅为了它而使用jQuery。 $('#lblUpdateStatus')基本上会直接进入document.getElementById('lblUpdateStatus') ,因为选择器中有一个锚点,所以你并没有真正获得任何东西。 此外,仅仅检查DOM对象是否存在,将其包装在jQuery对象中将产生相当多的开销。

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

 if (document.getElementById('lblUpdateStatus')) { $("#lblUpdateStatus").text(""); } 

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

 $("#lblUpdateStatus").text(""); 

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

 var test = $("
"); $.contains(window.document, test[0]); // false $("body").append(test); $.contains(window.document, test[0]); // true

我在博客上写了一篇关于这个的post

 if ( $('#element_id').length > 0 ) console.log('the element with element_id exists in the DOM'); 

如果可以将HTML字符串传递给$() ,则可以使用parent.length

 $('
').length // 1, but it not exist on page

 $('
').parent().length // 0