如何测试jQuery中页面上是否存在具有特定ID的元素?

时间:2012-01-15 23:42:57

标签: javascript jquery

在jQuery中,我编写了一段代码,显示在我网站的每一页上。

var d = $('#someElement').offset().top;

但是,并非我网站上的每个页面都有一个ID为" someElement"的元素。不幸的是,在缺少这种元素的这些页面上,没有jQuery代码可以工作。

为了解决这个问题,我想测试页面上的元素是否确实具有" someElement"然后只运行上面的代码片段。

我该如何进行此测试?这个测试会解决这个问题吗?谢谢。

7 个答案:

答案 0 :(得分:8)

如果元素存在,

$('#someElement').length将返回1,否则将返回0

答案 1 :(得分:3)

检查jQuery对象的长度。

var element = $('#someElement');
if (element.length) {
    var element_top = element.offset().top;
}

答案 2 :(得分:1)

使用if语句:if ($('#someElement').length) { do something }

答案 3 :(得分:1)

试试这个:

if($('#someElement').length>0){
   var d = $('#someElement').offset().top;
}

答案 4 :(得分:1)

只是另一种解决方法:即使元素不存在,您也可以运行var d = $('#someElement').offset()而不会导致错误(它只会返回null)。所以试试:

var d = $('#someElement').offset();
if (d) {
    d = d.top;
}

答案 5 :(得分:1)

不要使用jQuery!使用getElementById,因为如果元素不在DOM中,则结果为null

if (document.getElementById("someElement")) {

}

答案 6 :(得分:0)

使用选择器返回的jQuery集合的.length属性:

if ( $( "#myDiv" ).length ) {

$( "#myDiv" ).show();

}

请注意,并不总是需要测试元素是否存在。以下代码将显示该元素是否存在,如果不存在则不执行任何操作(没有错误):

$( "#myDiv" ).show();