Tag: dom

在jQuery mousedown处理程序中添加叠加层后,Internet Explorer泄漏了单击事件

在div的mousedown事件处理程序中,创建另一个新div并将其附加到正文。 这个新的div具有position:fixed (也可以是position:absolute )并且具有100%宽度和100%高度。 因此它立即覆盖触发鼠标按下事件的源div。 现在使用最新的谷歌浏览器(v30),最新的Firefox(v24),Opera v12.16甚至是旧版的Safari v5.1.1(在Windows上),在mousedown事件之后, 没有点击事件会在附加到身体的事件监听器上触发。 之后只有 Internet Explorer(9和10) 才会触发正文上的click事件! 为什么? 如何防止这种情况? 这实际上是IE中的一个错误吗? HTML: Click me CSS: .clickme { background-color: #BBB; } .overlay { position: fixed; /* or absolute */ left: 0; top: 0; height: 100%; width: 100%; background-color: #000; } JavaScript: $(document).on(‘click’, function(event) { console.log(‘body click’); }); $(‘.clickme’).on(‘mousedown’, function(event) { console.log(‘div […]

如何从内存中清除使用jQuery创建的DOM元素?

我的应用程序正在使用jQuery动态添加大量DOM元素。 所有这些元素都放入一个主容器div中。 然后,每次显示新页面时,使用jQuery的remove()移除此容器div; 问题是,似乎这个容器div的所有孩子似乎仍然被列在Chrome的devtools时间轴中的“Nodes”下。 我运行应用程序的时间越长,我创建的DOM元素就越多! 但是在查看HTML源代码时,节点不在那里。 我的代码: // creating lots of jquery elements and appending them to maincontainer var elm = document.createElement(“DIV”); var jq = jQuery(elm).text(“hello”); maincontainer.append(jq); // then, the main container(also a jquery object) is removed using maincontainer.remove(); 以这种方式从内存中清除DOM节点有什么问题? 为什么它们保留在“节点”下?

Ext.onReady()vs $(document).ready()

有什么不同? 我有$(document).ready函数,它应检查extjs是否已加载,但主要问题是extjs没有按时加载,$(document).ready内的东西开始执行,extjs create function产生主错误’无法在Ext.create(“…”,{..})上执行undefined’的创建; 线。 如果我像这样进行双重检查: $(document).ready(function() { Ext.onReady(function() { Ext.create(‘Ext.Button’, {…}); }); }); 事情神奇地起作用。 现在我正在使用ext-all.js,它有~1.3MB的缩小,这是非常大的imho ……当他做第二次检查时,事情变得神奇地加载……但我认为这两个函数不同于它们定义建议,因为如果我放入另一个$(document).ready而不是Ext.onReady()行,事情就会再次破裂。 我想Ext.onReady({}); 函数做了一些其他黑魔法,$(document).ready()没有,如果有人知道这种魔法是什么我感兴趣? 因为它有效,我不知道为什么会杀了我。 感谢阅读post。 =)ps。 我正在使用ExtJS大约一天,所以我对它很陌生。

有没有办法在所有jquery脚本运行后查看网页的来源?

我目前使用Chrome / Firefox进行网络开发。 是否有插件,或者我只是另一种方式,您可以在所有jQuery插件运行后查看HTML源代码? 我只想看看jQuery修改HTML的内容和方式?

替换function只能工作一次(javascript)

每次str1在特定div中显示时,我需要用另一个字符串(str2)替换字符串(str1)。 这是我到目前为止所得到的 $(window).load(function(){ var str=document.getElementById(“foo”).innerHTML; var n=str.replace(“Google”,”Yahoo”); document.getElementById(“foo”).innerHTML=n; }); 和HTML Google is the best website ever Google is not the best website ever 不幸的是,当我运行它时,它只取代了谷歌这个词的第一个实例。 我究竟做错了什么? 我需要添加什么来使它替换所有单词的实例?

使用变量(jQuery)中的事件复制DOM元素

我想在变量中复制DOM元素,所以我这样做了: var before = $(“#someid”)。html(); 然后我的脚本在这个“someid”DOM中做了很多东西,在完成之后我恢复了以前的DOM: $( “#someid”)HTML(前)。 这工作正常,但问题是我在这个DOM中有一些事件,这些事件不能像这样复制……那么还有另一种方法吗?

如何判断页面是否已跳转到javascript中的锚点(#)?

我有一些javascript可以出现在许多不同的页面上。 有时这些页面是通过包含锚引用的URL(例如#comment-100)访问的。 在那些情况下,我希望javascript延迟执行,直到窗口跳转。 现在我只是使用延迟,但这非常hackish,显然在所有情况下都不起作用。 我似乎无法找到任何与窗口“跳转”相对应的DOM事件。 除了简单的延迟之外,我提出的唯一解决方案是让JS在URL中查找锚点,如果找到了,请注意scrollTop中的更改。 但这似乎有些错误,我并不是100%确定我的脚本在滚动发生之前总会被触发,所以只有当用户手动滚动页面时它才会运行。 无论如何,我真的不喜欢这个解决方案,并且更喜欢更多事件驱动的东西。 有什么建议? 编辑澄清: 我不是想检测哈希变化。 采用以下示例: Page index.php包含post.php#comment-1的链接 用户单击post.php#comment-1的链接 post.php#comment-1加载 $(文件).ready fires 不久之后,浏览器向下滚动到#comment-1 我正试图可靠地检测第5步发生的时间。

如何在DOM树中保存/恢复对象的位置?

如果我有以下html: test special test 如何保存.draggable当前的DOM位置(一般情况下)? 我计划通过将它附加到document.body并使其position: absolute;来拖动这个.draggable position: absolute; 但如果用户没有对它做任何事情,我将需要恢复它。 我可以使用克隆,隐藏原始文件,并使用代理进行拖动,但我觉得这个问题可能已经更直接地解决了。 思考?

如何在DOM中移动元素?

我在DOM中有一个非常具有交互性的元素#superWidget。 它使用jquery UI可排序,可拖动和一堆其他插件。 我想改变DOM中#superWidget的位置。 我想从#wrapperB中删除它并将其放在#wrapperA中。 我试过以下…… var copy = $(“#superWidget”).clone(true, true); $(“#superWidget”).remove(); $(“#wrapperA”).append(copy); …然而,这打破了很多插件。 我不想重新绑定一切。 有一个更好的方法吗? (我注意到jquery UI可排序在某种程度上能够在DOM中移动元素而不会破坏任何交互性……必须有一种方法。) 在此先感谢您的帮助

使用jQuery将div附加到文档的末尾?

我想用jQuery编写一个函数来将div附加到网页的末尾。 我希望能够在许多不同的页面上使用该function。 我编写了以下代码,但它不起作用: $(document).append(”); $(‘#helloDiv’).html(‘hello’); // does nothing $(‘#helloDiv’).css(‘top’,’100′) // throws an error 我该如何解决?