Tag: dom

IE 8:删除节点保留子节点

我试图使用javascript从dom树中删除一个节点,同时保持它的孩子。 我测试了下面显示的3种方法,它们在Firefox中运行良好但在IE 8中没有(参见下面的示例)。 function removeNodeKeepChildren(node){ // approach 1 jQuery(node.parentNode).children().map(function (index) { jQuery(this).replaceWith(jQuery(this).contents()); }); // approach 2 // doesn’t work with content() either jQuery(node.parentNode).html(jQuery(node).html()); // approach 3 var childfragment = document.createDocumentFragment(); for(var i=0; i<node.childNodes.length;i++){ childfragment.appendChild((node.childNodes[i]).cloneNode()); } node.parentNode.replaceChild(childfragment,node); } 示例输入节点: start text bold text end text 它应该导致什么: start text bold text end text IE 8的作用: start text […]

jQuery在追加元素后立即返回div元素的高度0

我有一个最初没有内容的浮动div。 我使用jQuery将一组元素附加到div,然后立即调用原始div的height方法。 我添加的元素在样式表中有一个定义的最小高度,而浮动div则没有。 问题是,当我在原始div上调用高度时,我得到0。 如果我使用setTimeout来延迟调用甚至1毫秒,我得到适当的高度。 我的理论是,当我调用height方法时,浏览器还没有完成对DOM的更改,因此它还没有设置顶级元素的hei?ht。 这个高度会有所不同,因此使用固定高度。 有谁知道可能导致这个问题的原因是什么?

单次重绘/重排中有多个DOM更新?

我有一个表填充了连接用户列表。 列表本身不会经常更改,但每行上的一个事情是每秒更新一次的计时器(hh:mm:ss)。 要更新计时器,我正在做这样的事情: var curTime = new Date().getTime() / 1000; $(‘.timerCell’).each(function(){ var $this = $(this); var initialTime = $this.data(‘sessionStartTimestamp’); // .data gets when the cell is dynamically created based on data received in an ajax request. $this.text(unixToHumanTime(curTime – initialTime)); }); 我遇到的问题是:每次更新单个计时器单元时,都会触发重绘。 有没有办法告诉浏览器等待重绘? 或者可能是将这些更新分组到单个更新中的某种方式。 我还想过每次更新时都重新渲染整个tbody,但是认为这可能比只更新单元格更加系统密集。

什么时候textarea改变事件不被触发?

我依赖于每当textarea的内容发生变化时触发的更改事件。 根据jquery文档 ,在textarea失去焦点之前,这不会被触发。 在什么情况下不能触发事件? 是否会破坏页面,返回,点击链接等,总是会导致textarea失去焦点并被解雇? 换句话说,是否有可能在没有焦点的文本区域丢失输入的情况下离开页面?

使用jquery将列表拆分为相同大小的子列表的最有效方法

使用jQuery,分割列表的最有效方法是什么 … 分为几个子列表 … … 每个子列表(除了可能是最后一个)有n个项目。 我希望将DOM的查询和操作保持在最低限度,并将原始DOM元素移动到新列表中而不是克隆它们。

基于类更改的触发function

我有以下内容。 我试图根据css类更改触发函数,但它不起作用。 jQuery(document).ready(function(){ jQuery(“#slider-banner”).bind(“cssClassChanged”,function(){ console.log(“I’m Here!”); if(jQuery(“#slider-banner”).hasClass(‘living-nutrients’)) { jQuery(“#home-middle-first”).css(“background-image”,”url([image path])”); } else if(jQuery(“#slider-banner”).hasClass(‘right-partner’)) { jQuery(“#home-middle-second”).css(“background-image”,”url([image path])”); } else if(jQuery(“#slider-banner”).hasClass(‘with-you’)) { jQuery(“#home-middle-third”).css(“background-image”,”url([image path])”); } }); jQuery(“#slider-banner”).trigger(‘cssClassChanged’); colsole在页面加载时显示我的console.log消息,但在页面加载后类再次更改时则不显示。 有谁看到我做错了什么? 更新: 所以我已经知道“cssClassChanged”不合法……我试图调整我在其他地方找到的答案……我确实意识到如果jQuery是武器,我会很危险! (知道这是战斗的一半,对吧?) 我尝试调整gdoron的答案与以下相关: jQuery(document).ready(function() { function checkForChanges() { if(jQuery(“#slider-banner”).hasClass(‘living-nutrients’)) { jQuery(“#home-middle-first”).css(“background-image”,”url([image path])”); } else if(jQuery(“#slider-banner”).hasClass(‘right-partner’)) { jQuery(“#home-middle-second”).css(“background-image”,”url([image path])”); } else if(jQuery(“#slider-banner”).hasClass(‘with-you’)) { jQuery(“#home-middle-third”).css(“background-image”,”url([image path])”); } else setTimeout(checkForChanges, […]

有没有办法检测我是否在文本上空盘旋?

我真正想要的是检测光标何时变为“文本”类型,也就是说,当我将鼠标hover在一段文本上时。 我曾尝试查看我hover的元素类型,但这不太准确,因为我不知道它们实际包含的内容。 我知道只有先前由我分配了CSS光标属性才能检测到它。 这有可能吗? 你会怎么做呢? 编辑:我不想检查如果我当前在特定元素上,我想知道我是否将鼠标hover在该元素中的任何文本上。 div可以是浏览器的100%宽度,但是在最左边有一段较短的文本。 我不想检测何时将鼠标hover在元素的任何部分上。

返回节点文本(非递归)

我想返回表格单元格的节点值。 然而,方法text()沿着整个DOM树向下并返回所有嵌套节点的字符串(表格单元格可能包含text和html)。 一旦我提取了节点的字符串,我想修改它并将其写回节点。 修改后的文本由文本和html组成。 是否有任何jquery方法(或可能是Javascript)可用于获取文本(不降序为子)和另一个我可以用来写回文本的函数+ html(纯文本()和html()赢了’在这种情况下工作,因为他们会覆盖子节点)? 干杯,马克斯

在全屏模式Internet Explorer中检测事件更改

我正在尝试编写一个事件处理程序,用于检测我所拥有的video播放器是处于全屏还是“常规”模式。 我试过用 document.addEventListener(“fullscreenchange”, myfunc, false); 但这在IE中不起作用,我使用webkitfullscreenchange和mozfullscreenchange事件为firefox和chrome实现了同样的function。 我可以在IE中使用其他任何事件吗? 或者另一种方式呢? 任何帮助,将不胜感激。 谢谢!

从jQuery对象派生HTMLElement对象

我正在做一个相当详尽的DOM操作系列,其中一些元素(特别是表单元素)有一些事件。 我正在动态创建(实际上是从源元素克隆)几个框并为它们分配一个change()事件。 更改事件执行,并且在事件的上下文中,“this”是HTML元素对象。 但是,此时我需要做的是确定此HTML元素对象的上下文。 我已将这些对象存储为各种数组中的jQuery实体,但很明显 [HTMLElement Object] != [Object Object] 而诀窍在于我无法转换$(this)并进行有效的比较,因为这会创建一个新对象并且指针会有所不同。 所以……我一直在反对这个问题。 在过去,我已经能够通过进行innerHTML比较来规避这个问题,但在这种情况下,我所比较的对象是100%相同的,只是有很多它们。 因此,我需要一个可靠的比较。 如果我能以某种方式从我的原始jQuery对象派生HTMLElement对象,这将很容易。 思想,其他想法? 救命。 🙁