[英]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.