如何检查jQuery中是否存在具有id的元素?

时间:2013-09-11 00:34:32

标签: javascript jquery html

我正在动态生成div,我要检查是否存在动态生成的div?我怎么能这样做?

目前我正在使用以下内容,它不会检测动态生成的div。它仅检测HTML模板中是否已存在包含id的元素。

$(function() {
    var $mydiv = $("#liveGraph_id");
    if ($mydiv.length){
        alert("HHH");
    }
});

如何检测动态生成的div?

5 个答案:

答案 0 :(得分:11)

如果由于browser compatibility而导致突变观察不是一种选择,则您必须将实际插入<div>的代码纳入document

一种选择是将自定义事件用作pub/sub

$(document).on('document_change', function () {
    if (document.getElementById('liveGraph_id')) {
        // do what you need here
    }
});
// without a snippet to go on, assuming `.load()` for an example
$('#container').load('/path/to/content', function () {
    $(this).trigger('document_change');
});

答案 1 :(得分:3)

如果动态添加,则必须再次测试。比方说,点击事件

$("#element").click(function()
{
    if($("#liveGraph_id").length)
        alert("HHH");
});

答案 2 :(得分:0)

如何插入动态生成的div?

如果您按以下方式执行此操作:

var div = document.createElement('div');
div.id = 'liveGraph_id';
div.innerHTML = "i'm dynamic";
document.getElementsByTagName('body')[0].appendChild(div);
if ($(div).length > 0) {
    alert('exists'); //will give alert
}
if ($('#liveGraph_id').length > 0) {
    alert('exists'); //will give alert
}
if ($('#liveGraph_id_extra').length > 0) {
    alert('exists'); //wont give alert because it doesn't exist.
}

jsfiddle

答案 3 :(得分:0)

为了感兴趣,您还可以使用实时集合(它们作为DOM的一部分提供)。您可以在页面中设置所有div的集合(这可以在加载正文之前在头部完成):

var allDivs = document.getElementsByTagName('div');

任何带有id的div都可以作为集合的命名属性,因此您可以这样做:

if (allDivs.someId) {
  // div with someId exists
}

如果ID不是有效的标识符,或者它保存在变量中,请使用方括号表示法。一些播放代码:

<button onclick="
  alert(!!allDivs.newDiv);
">Check for div</button>
<button onclick="
  var div = document.createElement('div');
  div.id = 'newDiv';
  document.body.appendChild(div);
">Add div</button>

点击检查div 按钮,您将获得false。点击添加div 按钮添加div,然后再次检查 - 您将获得true

答案 4 :(得分:0)

非常简单

   if(document.getElementById("idname")){
//div exists 

}

    if(!document.getElementById("idname")){
//  don't exists
}