jQuery - 检查DOM元素是否已存在

时间:2011-04-04 13:12:34

标签: jquery

我正在尝试使用jQuery通过Ajax动态添加一些表单元素。 我想确保我没有两次创建相同的元素,所以我只想添加它,如果它尚未添加到DOM中。

我的所有元素都有唯一的CSS ID,例如:

$('#data_1')

我使用以下内容检查元素是否已存在:

if ($('some_element').length == 0) {
    //Add it to the dom
}

但是,它仅适用于首次加载时已经是页面一部分的元素。

如何检查页面加载后动态创建的元素?

感谢任何建议。

感谢。

10 个答案:

答案 0 :(得分:102)

这适用于所有元素,无论它们何时生成。

if($('some_element').length == 0) {
}

在ajax回调函数中编写代码,它应该可以正常工作。

答案 1 :(得分:13)

确认您正在以正确的方式选择元素。 试试这个

if ($('#some_element').length == 0) {
    //Add it to the dom
}

答案 2 :(得分:8)

这个问题是关于元素是否存在以及所有答案都检查它是否存在:)微小差异但值得一提。

基于jQuery documentation,检查存在的推荐方法是

if ($( "#myDiv" ).length) {
    // element exists
}

如果您想检查缺少的元素,可以使用:

if (!$( "#myDiv" ).length) {
    // element doesn't exist
}

if (0 === $( "#myDiv" ).length) {
    // element doesn't exist
}

请注意,在第二个选项中,我使用了===,这比==略快,并将左边的0作为Yoda condition

答案 3 :(得分:6)

猜猜你忘了把这个项目附加到DOM。

检查HERE

答案 4 :(得分:2)

如果ID可用 - 您可以使用getElementById()

var element =  document.getElementById('elementId');
  if (typeof(element) != 'undefined' && element != null)
  { 
     // exists.
  }

或尝试使用Jquery -

if ($(document).find(yourElement).length == 0) 
{ 
 // -- Not Exist
}

答案 5 :(得分:1)

(()=> {
    var elem = document.querySelector('.elem');  
    (
        (elem) ? 
        console.log(elem+' was found.') :
        console.log('not found')
    )
})();

如果存在,则将指定的元素作为DOM对象吐出。使用JQuery $('.elem')它只会告诉你它是一个对象,如果找到但不是哪个。

答案 6 :(得分:0)

在这种情况下,您可能想要检查当前DOM中是否存在元素

如果要检查DOM树中是否存在元素(附加到DOM),可以使用:

#

答案 7 :(得分:0)

if ($('#some_element').length === 0) {
    //If exists then do manipulations
}

答案 8 :(得分:0)

不能比较任何东西,你可以简单地检查一下......,。

if(document.getElementById("url")){ alert('exit');}
if($("#url")){alert('exist');}

您也可以使用html()函数,例如

if($("#url).html()){alert('exist');}

答案 9 :(得分:0)

也考虑使用

$(document).ready(function() {});

不知道为什么这里没有人想到这个(有点遗憾)。您何时执行代码???一开始就对吗?然后,您可能想使用上面提到的ready()函数,以便在加载整个页面(包括所有dom元素)之后而不是在加载之前执行代码!当然,如果您运行一些在页面加载后添加dom元素的代码,这将毫无用处!然后,您只想等待这些功能,然后再执行代码...