繁体   English   中英

如何检查DOM中是否存在ID(已使用长度概念)?

[英]How to check if an id exists in the DOM (already use length concept)?

如何检查DOM中是否存在id 我使用了长度的概念,但是给出了错误的结果。 我在演示中使用jstree插件。 我想检查该节点是否存在。 我用这个

if ($('#b-a-1').length) {
    alert("yes")
}
else {
    alert("no")
}

但是,当我运行它时,它会给出“否”的警报,但是它已经存在于DOM中。 为什么是这样?

这是我的小提琴链接: http : //jsfiddle.net/fuu94/179/

您可以使用$('#tree').jstree(true).get_node("ba-1")来检查是否存在具有特定ID的节点。 如果节点不存在,则get_node方法返回false。 这是一个例子:

    if($('#tree').jstree(true).get_node("b-a-1")) 
    {
      alert("yes")
    }else{
      alert("no")  
    }

我还根据您的展示创建了一个新的小提琴。 http://jsfiddle.net/mXyHL/4/

编辑:只是想指出这实际上不是在DOM中进行搜索,因为正如jfriend00和kmoe已经指出的那样,您要查找的元素已折叠并且不在DOM中。 但是,此方法告诉您jsTree是否包含具有指定ID的节点。

它与jstree插件有关。 如果删除该代码,则项目在那里,并且您的代码有效。

看来该插件实际上已从DOM中删除了折叠项,因此常规DOM查询直到它们展开后才找到它们,因为它们不在DOM中。 如果您在顶级检查项全部折叠时查看DOM检查器,则会看到ba-1项不在DOM中,因此jQuery选择器找不到它。 展开它,以便您可以看到它,然后jQuery选择器找到它。

使用.jstree()初始化jstree插件时,它将折叠节点并删除子li元素,包括ID为ba-1的子元素。

然后,当您单击以展开b节点时,它将再次创建子li元素。 如果此时单击checkId按钮,它将提示“是”。

提示:使用浏览器的检查器(F12)查看何时创建这些元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM