我在Google图片的我的保存页面上执行此脚本,但它只选择一个元素。
注意:大多数返回jQuery对象的jQuery方法也循环遍历jQuery集合中的元素集 - 一个称为隐式迭代的过程。发生这种情况时,通常不必使用.each()方法显式迭代:
这意味着我的代码应该适用于具有指定类的所有元素。但不幸的是,它只是在第一个元素上执行所有工作:
$('.col-cv-select').click();
我也尝试使用.each()
方法进行显式迭代,但浏览器控制台在使用此脚本时会抛出错误:
$('.col-cv-select').each(function (index, element) { element.click(); });
未捕获的TypeError:$(...)。每个都不是函数(...)
我确信该页面使用JQuery,因为第一个代码运行良好,但只选择一个元素。
希望你能帮助我:)提前谢谢。
答案 0 :(得分:4)
仅仅因为定义了$
变量并不意味着在页面上加载了jQuery。
当您在该页面上运行$('.col-cv-select')
时,您实际上正在运行document.querySelector('.col-cv-select')
,它在设计上只会返回一个元素。
您看到关于$(...).each
的TypeError不是函数的原因是因为第一个函数的返回值是DOM节点,而不是jQuery对象。
您可以通过在开发人员控制台中运行此代码将jQuery库注入页面:(从this page采取并改编)
(function() {
// more or less stolen form jquery core and adapted by paul irish
function getScript(url) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0],
done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState ||
this.readyState == 'loaded' ||
this.readyState == 'complete')) {
done = true;
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
getScript('https://code.jquery.com/jquery.min.js');
})();
执行该代码后,$
变量将替换为jQuery
,您将能够使用其.each
方法及其附带的所有其他内容。
请记住,一旦你重新加载页面,jQuery库将被卸载,再次加载它你需要重新运行上面的代码。
答案 1 :(得分:0)
您需要在测试之前将jquery导入Chrome浏览器
在调用测试代码之前使用以下代码块
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
// ... give time for script to load, then type.
jQuery.noConflict();