我正在编写一个用户脚本,它可以通过以下方式获取元素:
var theElement = $('div.someClass:last');
抓取类中的最后一个元素,.someClass以便我可以解析它。
这就是我的问题所在。此页面上有另一个脚本<div class="someClass">每隔一段时间动态添加一个新脚本。我希望页面上的最后一个元素始终具有.someClass选定的类。
Javascript/jQuery 是否总是有最新的元素,还是我必须手动“刷新”它?
我正在编写一个用户脚本,它可以通过以下方式获取元素:
var theElement = $('div.someClass:last');
抓取类中的最后一个元素,.someClass以便我可以解析它。
这就是我的问题所在。此页面上有另一个脚本<div class="someClass">每隔一段时间动态添加一个新脚本。我希望页面上的最后一个元素始终具有.someClass选定的类。
Javascript/jQuery 是否总是有最新的元素,还是我必须手动“刷新”它?
评估您的选择器并返回结果。如果你想做你所要求的,你将不得不重新评估那个选择器。
Sushanth 的回答是正确的,但根据这篇文章,您可以使用
var theElements = document.getElementsByClassName('someClass');
然后可靠地使用
var theElement = $(theElements[theElements.length - 1]); // wrapping in $() is optional
这是值得做的,因为 $(selector) 是一项相当昂贵的操作。
编辑- 仅适用于 ie9 及更高版本虽然http://caniuse.com/getelementsbyclassname
不..它不会自动刷新。
每次直接在选择器上修改某些内容时,最好再次缓存它。
您希望的选择器不是实时节点列表。
在这种情况下,如果选择器中似乎有任何更改,我宁愿在第一种情况下根本不缓存。
这样我就可以直接使用选择器而不是缓存的选择器。