虽然更好的方法可能是坚持选择它们的一种方式,但灵活性的缺乏可能对您不适用。
你可以,而不是仅仅写一个不可知元素的getter得到的元素,并在格式返回他们你想要的:
var getElements = function getElements(selector, format) {
var elements;
if (format.toLowerCase() === "htmlcollection") {
elements = document.getElementsByClassName(selector); //HTMLCollection
}
if (format.toLowerCase() === "nodelist") {
elements = document.querySelectorAll(selector); //NodeList
}
if (format.toLowerCase() === "jquery") {
elements = $(selector); //jQuery object
}
return elements;
};
...
// meanwhile, in another part of the code...
var slidesHTML = getElements("slide", "HTMLCollection");
var slidesNODE = getElements(".slide", "NodeList");
var slidesJQUERY = getElements(".slide", "jQuery");
个人来讲,我觉得HTMLCollection
和NodeList
藏品中最是没有价值的的情况下,所以这里我没有使用jQuery(或类似的库)项目,我只是使用以下命令:
var elements = Array.prototype.slice.call(document.querySelectorAll(selector));
这种方法可以让我CSS选择语法的灵活性(和特异性)来获取DOM元素并将它们拉回到元素的Array
中,在这些元素中迭代它们或对它们执行其他操作是微不足道的。
你为什么最终得到了这样一个不同的采用jQuery对象,NodeLists和HTMLCollection的方法集?你真的需要这些不同的参数类型吗? –
这似乎是非常依赖的情况,即没有一个明确的答案 – musefan
'$(“。slide”)[index]'或'$(“。slide”)。get(index)'提供对'DOM'对象 – guest271314