如何检查一个id是否存在于DOM中(已经使用长度概念)
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")
}
然而,当我运行它时,它给出了一个"no"的警告,但它已经存在于DOM中。为什么会这样?
这是我的小提琴链接:http://jsfiddle.net/fuu94/179/
可以使用$('#tree').jstree(true).get_node("b-a-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中。然而,该方法告诉您jtree是否包含具有指定id的节点。
当您使用.jstree()
初始化jstree插件时,它会折叠节点并删除子li
元素,包括id为b-a-1
的元素。
li
元素。如果此时单击checkId
按钮,它将提示"是"。提示:使用浏览器的检查器(F12)来查看这些元素的创建时间。
这与jstree插件有关。如果您删除了该代码,那么项目就在那里,您的代码就可以工作了。
看起来插件实际上已经从DOM中删除了折叠的项目,所以常规的DOM查询不会找到它们,直到它们被扩展,因为它们不在DOM中。如果在DOM检查器中查看顶层项是否全部折叠,您将看到b-a-1
项不在DOM中,因此jQuery选择器无法找到它。展开它,你可以看到它,然后你的jQuery选择器找到它。
相关文章:
- 通过删除其相关的 DOM 存在来重新初始化 jQuery 插件
- 将整个DOM保存在mysql中
- Ember.js:在模板中呈现谷歌图表(仅当存在时才称为目标DOM元素)
- 存在什么库来提供跨浏览器 DOM 访问
- 如何覆盖 ajax=false,以便它切换到加载的 dom 页面(如果存在)
- jquery-datatable-jeditable 在浏览器中显示编辑的值,但不保存在 DOM 中
- 为什么当我刚刚创建 DOM 元素时它不存在
- 使用 jQuery 生成 DOM 中已经存在的大块 HTML 的最简单和最好的方法
- 为什么 dom-elements 作为窗口对象的属性存在
- 是否存在清除从文档中删除的DOM子树的方法(至少可以阻止加载该子树中的图像)
- 有没有一种方法可以添加额外的独立字段,使它们不会成为预先存在的形式's(DOM)子代
- 是否可以在DOM中存在元素之前获取值
- 使用Javascript/jQuery将已存在的元素追加到DOM中
- 是否存在用于将元素添加到DOM中的另一个元素中的javascript侦听器
- 在重试ajax请求之前,请检查浏览器中是否仍存在必要的DOM节点
- 如何确定是否在父元素的开始或结束存在文本?HTML DOM &JavaScript
- 如何只在存在DOM元素的情况下加载Angular2应用
- 当注入javascript代码覆盖DOM中存在的代码时,会出现问题
- 当函数中存在多个时,javascript/DOM中的removeChild无法正常工作
- DOM元素在模板中还不存在.渲染回调函数