• 关于

    DOm节点

    的搜索结果

回答

对于浏览器引擎而言,并不存在“HTML标签”这回事。其本质是DOM节点对象。也并不存在“HTML文档”这回事,其本质是DOM节点对象组成的文档树。 浏览器引擎才是实际存储和渲染DOM节点对象的“大爷”。只是我们无法直接操作浏览器引擎,所以对这个本质并不熟悉(其实也不需要很熟悉,但是得知道)。 DOM节点对象是唯一的,但操作DOM节点对象的数据,却不止有一种方法。例如对于一个图像的宽度: •HTML可以通过的width属性去定义; •JavaScript可以通过element.width去读取和修改; •别忘了CSS,CSS也可以通过width属性去修改。 HTML属性和JavaScript的DOM对象的属性,本质上都只是影响DOM节点对象数据的众多理由之一。 多个原因影响同一个DOM节点的实质数据(多对一),请务必记住这个本质理由。 详细而言: HTML仅仅是文档树和节点对象的一种描述方法。 •浏览器的解析器部分,根据HTML直接把DOM文档树,交给浏览器引擎。 •用其他的方法,也可以描述DOM对象,例如JSX。(当然用其他方法描述DOM对象的时候,生成DOM文档树的过程,肯定会发生相应的修改) JavaScript中的DOM对象,仅仅是一种操作浏览器引擎中DOM对象的接口。 •JavaScript中的DOM对象,和浏览器引擎中存储的DOM节点,本质上不是一个东西。 •用户实际上仅仅有权操作JavaScript中提供的DOM对象。 •JS引擎和浏览器引擎协作,确保了JavaScript的DOM对象,是引擎中DOM节点的一个原样映射。 •这样用户就能通过操作JavaScript的DOM对象,透明的修改引擎中存储的DOM节点。 •而浏览器引擎在本质上,仅仅负责在DOM树更新时承担重新渲染,实际上并不关心JS的存在。 •你如果用其他办法修改了引擎使用的DOM树,也能更新文档结构。(当然这种办法基本上不存在…) 至于HTML属性名和JavaScript DOM对象的属性名大多相似或等同,这仅仅是人为的方便。我如果喜欢我也可以设计成这样嘛: // <img src="http://localhost/1.png" alt="alt text" width=640 height=480 /> node.DataSource = "http://localhost/1.png"; node.AlternativeText = "alt text"; node.Dimension.Width = 640; node.Dimension.Height = 480; 虽然这样就真的没法记了。 JavaScript DOM对象属性名和HTML属性名的近似,是JavaScript给Web开发者的恩惠。选择只记忆HTML属性名,然后记忆(或者是踩坑了再反查)JavaScript属性名中少量和HTML不同名的差异点,这是很自然的。

杨冬芳 2019-12-02 02:54:12 0 浏览量 回答数 0

回答

这个需要弄清楚实际的文档和Dom的区别。Dom的翻译是文档对象模型,它是一个模型,而这个模具就是文档。Dom将实际的文档通过另外一种形式来表现它。(也就是Dom节点树)回答你的问题:元素标签(位于文档)对应着元素节点(位于Dom节点树)。区别是Dom里面的元素节点是个对象,拥有属性和方法。而元素标签就仅仅是标签。

小旋风柴进 2019-12-02 02:08:08 0 浏览量 回答数 0

回答

大家都知道操作 DOM 是很慢的,为什么慢的原因已经在「浏览器渲染原理」章节中说过,这里就不再赘述了。 那么相较于 DOM 来说,操作 JS 对象会快很多,并且我们也可以通过 JS 来模拟 DOM const ul = { tag: 'ul', props: { class: 'list' }, children: { tag: 'li', children: '1' } } 上述代码对应的 DOM 就是 <ul class='list'> <li>1</li> </ul> 那么既然 DOM 可以通过 JS 对象来模拟,反之也可以通过 JS 对象来渲染出对应的 DOM。当然了,通过 JS 来模拟 DOM 并且渲染对应的 DOM 只是第一步,难点在于如何判断新旧两个 JS 对象的最小差异并且实现局部更新 DOM。 首先 DOM 是一个多叉树的结构,如果需要完整的对比两颗树的差异,那么需要的时间复杂度会是 O(n ^ 3),这个复杂度肯定是不能接受的。于是 React 团队优化了算法,实现了 O(n) 的复杂度来对比差异。 实现 O(n) 复杂度的关键就是只对比同层的节点,而不是跨层对比,这也是考虑到在实际业务中很少会去跨层的移动 DOM 元素。 所以判断差异的算法就分为了两步 首先从上至下,从左往右遍历对象,也就是树的深度遍历,这一步中会给每个节点添加索引,便于最后渲染差异一旦节点有子元素,就去判断子元素是否有不同 在第一步算法中我们需要判断新旧节点的 tagName 是否相同,如果不相同的话就代表节点被替换了。如果没有更改 tagName 的话,就需要判断是否有子元素,有的话就进行第二步算法。 在第二步算法中,我们需要判断原本的列表中是否有节点被移除,在新的列表中需要判断是否有新的节点加入,还需要判断节点是否有移动。 举个例子来说,假设页面中只有一个列表,我们对列表中的元素进行了变更 // 假设这里模拟一个 ul,其中包含了 5 个 li [1, 2, 3, 4, 5] // 这里替换上面的 li [1, 2, 5, 4] 从上述例子中,我们一眼就可以看出先前的 ul 中的第三个 li 被移除了,四五替换了位置。 那么在实际的算法中,我们如何去识别改动的是哪个节点呢?这就引入了 key 这个属性,想必大家在 Vue 或者 React 的列表中都用过这个属性。这个属性是用来给每一个节点打标志的,用于判断是否是同一个节点。 当然在判断以上差异的过程中,我们还需要判断节点的属性是否有变化等等。 当我们判断出以上的差异后,就可以把这些差异记录下来。当对比完两棵树以后,就可以通过差异去局部更新 DOM,实现性能的最优化。 另外再来回答「为什么 Virtual DOM 比原生 DOM 快」这个问题。首先这个问题得分场景来说,如果无脑替换所有的 DOM 这种场景来说,Virtual DOM 的局部更新肯定要来的快。但是如果你可以人肉也同样去局部替换 DOM,那么 Virtual DOM 必然没有你直接操作 DOM 来的快,毕竟还有一层 diff 算法的损耗。 当然了 Virtual DOM 提高性能是其中一个优势,其实最大的优势还是在于: 将 Virtual DOM 作为一个兼容层,让我们还能对接非 Web 端的系统,实现跨端开发。同样的,通过 Virtual DOM 我们可以渲染到其他的平台,比如实现 SSR、同构渲染等等。实现组件的高度抽象化

前端问答 2019-12-24 12:32:58 0 浏览量 回答数 0

万券齐发助力企业上云,爆款产品低至2.2折起!

限量神券最高减1000,抢完即止!云服务器ECS新用户首购低至0.95折!

回答

SAX与DOM之间有一些显著区别,包括:DOM是复杂对象处理的首选,比如当XML比较复杂的时候,或者当你需要随机处理文档中数据的时候。SAX从文档的开始通过每一节点移动,以定位一个特定的节点。 DOM为载入到内存的文档节点建立类型描述。最终,这些描述呈现了可容易横向移动、潜在巨大、树型结构。如果XML很冗长,DOM就会显示出无法控制的胀 大。例如,一个300KB的XML文档可以导致RAM或者虚拟内存中的3,000,000KB的DOM树型结构。通过比较就会发现,一个SAX文档根本就 没有被解构,它也没有隐藏在内存空间中(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。SAX就是一种“更轻巧的”技术──它可以给你的系统 带来更轻的负担。SAX相当于观看一场马拉松比赛,而DOM就好比邀请所有的比赛选手到家里参加晚餐。所以,你如何选择SAX和DOM?如果你处理复杂的东西,比如高级XSLT转换,或者Xpath过滤,请选择使用DOM。如果你建立或者更改XML文档,你也可以选择DOM。相反,你可以使用SAX来查询或者阅读XML文档。SAX可以快速扫描一个大型的XML文档,当它找到查询标准时就会立即停止,然后再处理之。在某些情况下,在一个方案中,最佳的选择是使用DOM和SAX处理不同的部分。例如,你可以使用DOM将XML载入到内存并改变它,然后通过从DOM树中发送一个SAX流而转移最后的结果。

cysnow 2019-12-02 01:49:13 0 浏览量 回答数 0

回答

Node 对象是整个 DOM 的主要数据类型。节点对象代表文档树中的一个单独的节点。节点可以是元素节点、属性节点、文本节点,或者也可以是“节点类型”那一节中所介绍的任何一种节点。请注意,虽然所有的对象均能继承用于处理父节点和子节点的属性和方法,但是并不是所有的对象都拥有父节点或子节点。例如,文本节点不能拥有子节点,所以向类似的节点添加子节点就会导致 DOM 错误。public class Node//单链表的节点{E nodeValue;//节点里存的值Node nextNode;//指向下一个节点的地址public boolean addNode(Node node) { node.nextNode = this.nextNode; this.nextNode = node; return true; } public boolean delNode(Node node)//本节点到传入的节点之间所有节点都删{this.nextNode = node.nextNode(); } E getNodeValue()//剩下的自己想,返回节点存的值boolean isLastNode()//判断是否是最后一个节点Node nextNode()//返回下一个节点}

蛮大人123 2019-12-02 01:52:46 0 浏览量 回答数 0

回答

引用来自“patrick=pk”的答案 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 这个需要你去改变一下思路了,因为zTree 使用了延迟加载的技术,并不是所有的 节点都在初始化时立刻生成 DOM 的,如果你的需求特殊,建议你不适用 url +target 的方法,而直接利用 onClick 来进行灵活的控制,这样可就容易多了 ###### 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 ######是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。###### 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 ###### @zTree OK,我试试,多谢。

kun坤 2020-06-14 06:29:17 0 浏览量 回答数 0

回答

引用来自“patrick=pk”的答案 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 这个需要你去改变一下思路了,因为zTree 使用了延迟加载的技术,并不是所有的 节点都在初始化时立刻生成 DOM 的,如果你的需求特殊,建议你不适用 url +target 的方法,而直接利用 onClick 来进行灵活的控制,这样可就容易多了 ###### 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 ######是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。###### 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 ######@zTree OK,我试试,多谢。

kun坤 2020-05-31 21:46:32 0 浏览量 回答数 0

回答

引用来自“patrick=pk”的答案 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 这个需要你去改变一下思路了,因为zTree 使用了延迟加载的技术,并不是所有的 节点都在初始化时立刻生成 DOM 的,如果你的需求特殊,建议你不适用 url +target 的方法,而直接利用 onClick 来进行灵活的控制,这样可就容易多了 ###### 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 ######是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。###### 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 ###### @zTree OK,我试试,多谢。

montos 2020-06-02 12:17:35 0 浏览量 回答数 0

回答

"<div class=""ref""> 引用来自“patrick=pk”的答案 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 这个需要你去改变一下思路了,因为zTree 使用了延迟加载的技术,并不是所有的 节点都在初始化时立刻生成 DOM 的,如果你的需求特殊,建议你不适用 url +target 的方法,而直接利用 onClick 来进行灵活的控制,这样可就容易多了 ###### 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 ######是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。###### 引用来自“zTree”的答案 首先很抱歉,我自己并没有在 dwz 中与 ztree 结合做过测试,但是已经有不少朋友问过类似在 dwz 中使用 ztree 的问题,的确还木有看过你这种问题,之前的大部分是用户不熟悉 dwz 的原因导致。 按照你说的情况,我觉得比较奇怪,如果一级节点已经搞定,按道理应该是可以正常结合工作了。 为何二级节点 的target 就无效了呢??对于一级节点/二级节点来说,zTree 本身并没有什么特殊的不同之处。  建议你用 chrome 的调试工具看看,生成的一级节点和二级节点的target 以及 rel 是否都正确? 再就是跟踪一下代码的执行情况。。。  另外,有几个提示之处:是否你的一级节点是初始化后就直接显示了的? 而二级节点要展开后才会显示? 这样的话,一旦你在init 后利用绑定 DOM 的方法控制弹窗,那么肯定是不会影响二级节点的,因为那时候二级节点的 DOM 还木有生成。 @zTree 是的。我默认是只显示了第一级节点,后面的是在调用addDiyDom方法,利用$("#" + treeNode.tId + "_a").attr("target","ajax");去绑定DOM的。怎么样才能在初始化时,就绑定所有的节点呢。 ###### @zTree OK,我试试,多谢。"

montos 2020-05-31 12:04:55 0 浏览量 回答数 0

回答

$('.post a').attr('rel', 'lightbox');理论上jQuery在页面DOM树加载完成以后会立刻修改DOM树,点击事件在此事件之后,点击的时候会重新遍历DOM树,应该不会出现你描述的问题。你可以再仔细看看lightbox的文档,是否在DOM数刚载入完全就把符合要求节点都存下来了;如果是这样的话应该也会提供方法刷新这些节点。

云栖技术 2019-12-02 02:20:44 0 浏览量 回答数 0

回答

dom 节点上的方法是 dom 规范中描述的,即你说的原生方法;jq 对象是对于原生节点的一个封装,上面的方法是 jq 库中描述的,即你说的 jq 方法。所以原生节点上必然是访问不到 jq 库中的方法的,jq 节点上可以访问 jq 方法,也可以通过拿出里面的原生节点来访问原生方法。题主说的互相访问是不成立的,例子中的 click 只是因为两边都有名字叫做 click 的方法而已。

小旋风柴进 2019-12-02 02:28:21 0 浏览量 回答数 0

问题

[vue] vue怎么获取DOM节点?

游客7iokfgo4yexey 2020-05-23 15:51:03 7 浏览量 回答数 1

回答

显然你这里写的是错误的:componentDidMount : function(){ this.props.flag_form? $(this).slideDown(200):$(this).slideUp(200); },这里的 this 是什么? 这里的 this 指的是你 HeaderForm 这个组件对象,组件对象是 React 生成的,并不是真实的一个 Dom 节点,你不能用 jQuery 来操作他,没有用的。想要直接操作 Dom 的话,在 React 0.14 中你可以给 render 的 form 设置一个 ref , 然后再通过 this.refs.formNode (formNode 是你给 form 设置的 ref),这个对象才是那个 form 的真实 dom 节点,你可以用 jQuery 给他封装一下然后就可以调用 jQuery 的方法了 。如果你用的是 0.13 的话,还要加个 getdDOMNode() 这个函数才能拿到真实的 Dom 节点。

小旋风柴进 2019-12-02 02:24:35 0 浏览量 回答数 0

问题

为何多次append jQuery对象只有一个dom节点

小旋风柴进 2019-12-01 19:35:16 947 浏览量 回答数 1

问题

DOM 操作——怎样添加、移除、移动、复制、创建和查找节点?

剑曼红尘 2020-04-04 10:32:07 1 浏览量 回答数 1

问题

前端面试经典题目合集-DOM操作——怎样添加、移除、移动、复制、创建和查找节点。

小柯卡力多 2019-12-01 22:04:43 6 浏览量 回答数 1

问题

如何使用DOM4J读取自定义xml文件中的默认值:报错

kun坤 2020-06-06 16:54:33 0 浏览量 回答数 1

问题

删除节点后是否需要将手动将事件解绑?

杨冬芳 2019-12-01 20:06:43 628 浏览量 回答数 1

问题

HTML DOM元素给节点起ID class 的时候有什么讲究?

杨冬芳 2019-12-01 20:00:52 971 浏览量 回答数 1

回答

虚拟DOM本身是一个JavaScript对象模拟真实DOM ,用对象的属性去描述一个DOM节点,最终也只是一个真实DOM的映射 问题来源于GitHub,查看更多答案,请查看https://github.com/haizlin/fe-interview/issues/325

游客7iokfgo4yexey 2020-05-24 22:34:32 0 浏览量 回答数 0

回答

会。 清除DOM节点能够是否DOM占用的内存。 像很多瀑布流形式的图片网站, 图片加载到一定程度会删除一部分图片; 当页面往回滚时, 又把图片添加回去。具体实现可以参考chrome的书签页面的实现。 他也做了不在显示区域的书签就删除节点的操作。

杨冬芳 2019-12-02 02:50:45 0 浏览量 回答数 0

回答

区分两棵树时,React首先比较两个根元素。行为因根元素的类型而异。它涵盖了对帐算法中的以下规则, 不同类型的元素: 每当根元素具有不同类型时,React都会拆除旧树并从头开始构建新树。例如,to 或from到不同类型的元素会导致完全重建。 相同类型的DOM元素: 比较两个相同类型的 React DOM元素时,React会查看两个属性,保留相同的基础DOM节点,仅更新更改的属性。让我们以除className属性之外的相同DOM元素作为示例, < div className = “ show ”标题= “ ReactJS ” / > < div className = “ hide ”标题= “ ReactJS ” / > 相同类型的组件元素: 当组件更新时,实例保持不变,因此在渲染之间保持状态。React更新基础组件实例的属性以匹配新元素,并在基础实例上调用componentWillReceiveProps()和componentWillUpdate()。之后,将调用render()方法,并且diff算法将根据先前的结果和新的结果进行递归。 在子 节点上递归:在DOM节点的子节点上递归时,React只是同时遍历两个子列表,只要有区别,就会生成一个突变。例如,在子级末尾添加元素时,在这两个树之间进行转换会很好。

你的答案 2020-05-08 11:42:52 0 浏览量 回答数 0

问题

dom 访问元素子节点会访问到空的文本节点

杨冬芳 2019-12-01 20:09:47 997 浏览量 回答数 1

回答

DOM0事件模型(原始事件模型) 有两种实现方式 通过元素属性来绑定事件 点我 先获取页面元素,然后以赋值的形式来绑定事件 const btn = document.getElementById('btn') btn.onclick = function(){ //do something } //解除事件 btn.onclick = null DOM0缺点 一个dom节点只能绑定一个事件,再次绑定将会覆盖之前的事件。 DOM2事件模型 dom2新增冒泡和捕获的概念,并且支持一个元素节点绑定多个事件。 2.1 事件捕获和事件冒泡(capture,bubble ) 如图所示1,2,3为捕获,4,5,6,7为冒泡,也就是说事件流分为三个阶段: DOM2 级事件模型共有三个阶段: 事件捕获阶段:事件从 document 向下传播到目标元素,依次检查所有节点是否绑定了监听事件,如果有则执行。 事件处理阶段:事件在达到目标元素时,触发监听事件。 事件冒泡阶段:事件从目标元素冒泡到 document,并且一次检查各个节点是否绑定了监听函数,如果有则执行。 2.2 addEventListener 这应该是大家用的最熟悉的事件绑定方法了。 addEventListener有三个参数 事件名称、事件回调、捕获/冒泡 btn.addEventListener('click',function(){ console.log('btn') },true) box.addEventListener('click',function(){ console.log('box') },false) 设置为true,则事件在捕获阶段执行,为false则在冒泡阶段执行。 3. IE事件模型 IE事件只支持冒泡,所以事件流有两个阶段: 事件处理阶段:事件在达到目标元素时,触发监听事件。 事件冒泡阶段:事件从目标元素冒泡到 document,并且一次检查各个节点是否绑定了监听函数,如果有则执行。 实现方法: // 绑定事件 el.attachEvent(eventType, handler) // 移除事件 el.detachEvent(eventType, handler)

景凌凯 2020-04-03 22:07:57 0 浏览量 回答数 0

回答

这思路是不对的。 window.$=function(id){ // window.$表示的是function,而不是dom节点 return document.getElementById(id); } $.click=function(f){//这里的$是function,不是dom节点,因此$.click无意义。$.attachEvent也无意义。 $.attachEvent("onclick",f()); }

小旋风柴进 2019-12-02 02:13:06 0 浏览量 回答数 0

问题

添加DOM节点遇到个小问题,请教大牛们

杨冬芳 2019-12-01 19:54:06 896 浏览量 回答数 1

问题

添加DOM节点遇到个小问题,请教大牛们。

a123456678 2019-12-01 20:19:51 771 浏览量 回答数 1

回答

建议使用门户网站将子级呈现到父组件的DOM层次结构之外的DOM节点中。 ReactDOM.createPortal(child, container) 第一个参数是任何可渲染的React子元素,例如元素,字符串或片段。第二个参数是DOM元素。

你的答案 2020-05-07 17:18:09 0 浏览量 回答数 0

问题

dom4j中能否通过节点的属性获得某个具体的节点?

蛮大人123 2019-12-01 19:57:07 1143 浏览量 回答数 1

问题

为什么说 SAX 比 DOM4J 解析 xml 性能低?:报错

kun坤 2020-06-06 15:28:11 3 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站