Tag: dom

我需要为qUnit测试套件提供许多不同的整页DOM样本

我有一小部分要测试的Javascript,但它在整个页面上运行,例如,通过编号ID“#t34”查找元素。 我需要创建一些不同的页面来测试不同的可能配置。 我看到我可以使用qunit-fixture为要访问的测试创建一个DOM树,但每个页面配置需要是一个完整的页面,因为它将按id找到元素。 各种qUnit教程似乎专注于纯Javascript函数执行简单算术的简单示例。 我需要帮助了解如何使用许多不同的文件构建一个真正的测试套件。 更新了更多详细信息:我是coverage代码覆盖工具coverage.py的所有者。 它会生成HTML报告。 这些报告上有jQuery,可以添加一些交互性。 我正在添加更多,并希望自动化测试。 HTML看起来像这样 。 没有涉及服务器,这些只是写入本地目录的文件,因此没有机会使用ajax。 我想针对许多不同的页面配置运行我的测试,主要是针对红色和绿色代码块的边缘情况。 因为我的代码按编号访问源代码行为$(“#t123”) (例如),所以我在同一个DOM中不能有多个HTML的“页面”,因为ID会发生冲突。 如何针对不同的HTML页面运行qUnit?

与原生DOM方法相比,为什么jQuery选择器的function如此之慢

我知道这个话题已经被多次辩论过了,但是我正在寻找更加技术性和详细的洞察力来了解真正发生的事情。 我设计了一系列测试来比较jQuery最基本的选择器’#id’和’.class’与各种原生DOM方法的速度。 我希望找出结果是什么的确切原因。 以下是测试: http : //jsperf.com/jqueryspeed 最值得注意的是,getElementById显然是最快的。 为了比较,我添加了jQuery(’#id’)和jQuery.fn.init(’#id’)作为测试,两者之间的区别在于第一个确实实现了一个全新的jQuery对象,而第二个是只运行原型函数,因此更快。 所以,这两者之间的区别是可以理解的。 然而,我不理解的主要区别是getElementById的速度和jQuery.fn.init的速度之间的巨大差距,它有一个简单的测试来以特定的方式处理一个简单的(’#id’)请求,回到对getElementById本身的调用。 那么,为什么例如在Chrome上,这种方法比原生方法快8倍,即使它基本上只是它的包装? 它也比包装的getElementById $(document.getElementById(’#id’))慢约3-4倍… 有什么想法吗?

浏览器后退按钮和动态元素

我有一个页面,它使用jQuery根据用户从框中内容动态创建多个 DOM元素。 假设用户从选择框中选择4,我的脚本动态显示4个输入框。 问题是当用户刷新或返回此页面时(使用浏览器后退按钮)。 动态创建的元素不会重新填充到它们的最后值,而所有其他“静态”元素都是。 我想我可以创建一个隐藏的输入 ,通过javascript与动态框的内容序列化,然后在$ document.ready上读取它,然后重新填充我的框。 有没有更好的办法?

如何使用jQuery在下拉列表中按文本值选择项目?

如果我有以下选择,并且不知道用于提前选择项目的值,就像在这个问题或我想要选择的项目的索引一样,如果我知道了,我怎么能用jQuery选择其中一个选项选项C之类的文本值? Option A Option B Option C

qTip问题 – 提示未显示,因为元素在脚本后加载

我对javascript,jQuery或它的插件不是很有经验但通常我管理。 无论如何,我的客户正在建立一个网站,其目的之一是从不同的网站上获取新闻文章,并在无序的HTML列表中显示标题。 我没有访问他的代码,新闻文章加载相当慢(很多网站加载后)。 我正在使用qTIP,这个想法是,一旦你将鼠标hover在新闻标题上,它就会生成一个工具提示。 这在我的开发环境中工作正常,因为我有虚拟标题,不是从任何地方生成的。 问题是,一旦客户端在其测试环境中设置了站点,将新闻标题加载到列表中的脚本就会很慢,以至于qTIP脚本在列表中有任何元素之前加载。 因此,它不知道任何 的提取和生成工具提示。 有没有办法确保在工具提示脚本加载之前加载所有新闻文章? 我认为加载脚本的简单延迟并不是很聪明,因为有些标题的加载时间比其他标题要长,因此延迟时间必须相当长。

重新安排/分配DIV而无需重新插入DOM

我有几个DIV,其内容具有data-weight属性,该属性通过AJAX定期更新。 我在循环中对它们进行排序,我在迭代来自ajax-request的新值。 由于数据权重可以随时更新为任何值,因此订单可以从更新更改为更新。 我的排序逻辑似乎有缺陷(至少可以说是))因为它只通过.next()将每个元素与下一个元素进行比较,所以你必须点击“按数据权重排序”最大值。 4个元素的4次,直到它们被排序(参见下面的小提琴) 重要的是要知道要排序的DIV包含外部资源,如图像,video等,因此重要的是它们被移动而不是重新创建,因为我认为当重新插入DOM时,包含的资源会被重新加载这对我的用例来说是不可接受的。 由于很难描述和理解,这是我的小提琴: http://jsfiddle.net/PdGTK/5/ 更新 虽然主要问题已经解决,但仍然存在这样的问题:当包括fe Youtube-Videos时,每次重新排序DIV时都会重新加载它们,即使video在DOM中没有改变位置也是如此。 a)看起来很奇怪,b)中断video播放。 阅读有关该主题的更多信息,在DOM中移动iframe似乎总是让他们重新加载他们的内容 – 这有多愚蠢? 对于YTvideo,小提琴更新为固定数据权重1,因此它始终保持在最顶层。 http://jsfiddle.net/PdGTK/10/ 想法非常欢迎!!

DIV节点如何“分离”,有什么用?

在本文中,创建了一个独立的Div节点: http : //www.bennadel.com/blog/1008-jQuery-empty-Kills-Event-Binding-On-Persistent-Nodes.htm 我不明白:我认为DOM拥有每个节点。 你会如何附加到DOM呢? 最后但并非最不重要的是具有分离节点的目的是什么?

jQuery / Sizzle checkContext内存泄漏

在DevTools中使用“Profiles”调试我的应用程序时,我发现“Detached DOM tree”正在累积。 这些分离的节点有保留树,主要由checkContext函数组成(来自jQuery内部的sizzle – v1.10.1)。 我不知道如何处理这个问题。 这个结果什么意思?

在AJAX调用后访问DOM对象?

我有一个典型的AJAX调用,它将一些HTML附加到当前页面。 我希望能够使用典型的jQuery选择器访问新插入的HTML。 这是我希望能够做到的…… $.ajax({ url: url, success: function(data) { $(‘body’).append(data); } }); $(‘#new_div’).show(); #new_div将是我检索到的数据中的一些HTML元素。 我不一定要将事件附加到新元素(如click ),所以使用像.on()或.on()这样的东西在这里不起作用(据我所知)。 我尝试将$.ajax()调用设置为一个变量: var new_div = $.ajax(…)但是这并没有让我感到var new_div = $.ajax(…) 。

jquery在div中加载html时等待光标

我想向用户显示结果正在加载的状态。 如何使用$ MyDiv.load(“page.php”)在div中加载结果时更改光标或gif?