如何使用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