Questions tagged «dom»

文档对象模型(DOM)是一种以编程方式引用诸如XML和HTML之类的标记语言的元素的方法。与[javascript]或任何其他具有DOM分析器的编程语言一起使用


5
查找具有特定类的最接近的祖先元素
如何在纯JavaScript中找到与具有特定类的树最接近的元素的祖先?例如,在像这样的树中: <div class="far ancestor"> <div class="near ancestor"> <p>Where am I?</p> </div> </div> 然后,我想div.near.ancestor在上尝试p并搜索ancestor。
225 javascript  html  dom 


15
检查是否使用jQuery加载了图片(没有错误)
我将JavaScript与jQuery库配合使用,以操作无序列表中包含的图像缩略图。加载映像后,它会做一件事;发生错误时,它会做其他事情。我正在使用jQuery load()和error()方法作为事件。在这些事件之后,我检查图像DOM元素的.complete,以确保在jQuery可以注册事件之前尚未加载图像。 它正常工作,除非在jQuery可以注册事件之前发生错误。我能想到的唯一解决方案是使用img onerror属性在全局某处(或其自身的节点上)存储“标志”,该标志表示失败,因此jQuery在检查.complete时可以检查该“存储/节点”。 有人有更好的解决方案吗? 编辑:加粗要点,并在下面添加了更多详细信息: 我正在检查图像是否完整(也称为已加载),然后在图像上添加加载和错误事件。这样,如果在注册事件之前加载了图像,我仍然会知道。如果在事件之后未加载图像,则事件将在事件发生时对其进行处理。问题是,我可以轻松检查图像是否已经加载,但是我不能确定是否发生错误。

19
可以使用innerHTML插入脚本吗?
我想一些脚本加载到使用页面innerHTML上<div>。脚本似乎已加载到DOM中,但从未执行(至少在Firefox和Chrome中)。将脚本插入时,是否可以执行脚本innerHTML? 样例代码: <!DOCTYPE html> <html> <body onload="document.getElementById('loader').innerHTML = '<script>alert(\'hi\')<\/script>'"> Shouldn't an alert saying 'hi' appear? <div id="loader"></div> </body> </html> 运行代码段隐藏结果展开摘要

7
jQuery .live()vs .on()方法,用于在加载动态html后添加click事件
我正在使用jQuery v.1.7.1,显然不赞成使用.live()方法。 我遇到的问题是,使用以下方法将html动态加载到元素中时: $('#parent').load("http://..."); 如果我尝试在之后添加click事件,则不会使用以下两种方法之一注册事件: $('#parent').click(function() ...); 要么 // according to documentation this should be used instead of .live() $('#child').on('click', function() ...); 实现此功能的正确方法是什么?它似乎只对.live()有效,但我不应该使用该方法。请注意,#child是动态加载的元素。 谢谢。

23
在Chrome / Mac上强制DOM重绘/刷新
Chrome有时会不正确地显示或完全不显示完全有效的HTML / CSS。通过DOM检查器进行挖掘通常足以使它意识到其方式的错误并正确重绘,因此可以证明标记是好的。在我正在研究的项目中,这种情况经常发生(并且可以预测)到足以在某些情况下强制执行重绘的代码位置。 这适用于大多数浏览器/操作系统组合: el.style.cssText += ';-webkit-transform:rotateZ(0deg)' el.offsetHeight el.style.cssText += ';-webkit-transform:none' 如前所述,调整一些未使用的CSS属性,然后要求一些信息以强制重绘,然后取消调整该属性。不幸的是,Mac版Chrome背后的聪明团队似乎找到了一种无需重新绘制即可获取offsetHeight的方法。从而杀死本来有用的黑客。 到目前为止,我想出的在Chrome / Mac上获得相同效果的最好方法是: $(el).css("border", "solid 1px transparent"); setTimeout(function() { $(el).css("border", "solid 0px transparent"); }, 1000); 在这种情况下,实际上迫使元素跳一点,然后冷静一秒钟再跳回去。更糟糕的是,如果将超时时间降低到500ms以下(不太明显),则通常不会达到预期的效果,因为浏览器在返回原始状态之前无法进行重绘。 有人在乎提供适用于Chrome / Mac的此重绘/刷新hack(最好基于上述第一个示例)的更好版本吗?

16
jQuery-从DOM中删除元素时触发事件
我试图弄清楚从页面中删除元素时如何执行一些js代码: jQuery('#some-element').remove(); // remove some element from the page /* need to figure out how to independently detect the above happened */ 是否有为此量身定制的活动,例如: jQuery('#some-element').onremoval( function() { // do post-mortem stuff here }); 谢谢。
211 jquery  events  dom  triggers 




9
如何在Javascript中检查一个元素是否包含在另一个元素中
如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: if (element1.hasDescendant(element2)) 要么 if (element2.hasParent(element1)) 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。
201 javascript  dom 

5
JavaScript DOM移除元素
我正在尝试测试DOM元素是否存在,如果确实存在,则将其删除,如果不存在,则将其创建。 var duskdawnkey = localStorage["duskdawnkey"]; var iframe = document.createElement("iframe"); var whereto = document.getElementById("debug"); var frameid = document.getElementById("injected_frame"); iframe.setAttribute("id", "injected_frame"); iframe.setAttribute("src", 'http://google.com'); iframe.setAttribute("width", "100%"); iframe.setAttribute("height", "400"); if (frameid) // check and see if iframe is already on page { //yes? Remove iframe iframe.removeChild(frameid.childNodes[0]); } else // no? Inject iframe { whereto.appendChild(iframe); …
198 javascript  dom 


12
AngularJS:AngularJS渲染模板后如何运行其他代码?
我在DOM中有一个Angular模板。当我的控制器从服务中获取新数据时,它将更新$ scope中的模型,然后重新呈现模板。到目前为止一切都很好。 问题是,在模板重新呈现并且在DOM中(在本例中为jQuery插件)之后,我还需要做一些额外的工作。 似乎应该有一个事件要听,例如AfterRender,但我找不到任何此类事件。也许一条指令是一个可行的方法,但是它似乎还为时过早。 这是一个概述我的问题的jsFiddle:Fiddle-AngularIssue ==更新== 基于有用的评论,我相应地切换到了处理DOM操作的指令,并在指令内部实现了$ watch模型。但是,我仍然遇到相同的基本问题。$ watch事件中的代码在模板被编译并插入DOM之前触发,因此,jQuery插件始终在评估一个空表。 有趣的是,如果我删除了异步调用,那么整个程序就可以正常工作,因此这是朝正确方向迈出的一步。 这是我更新的小提琴,以反映这些更改:http : //jsfiddle.net/uNREn/12/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.