雖然更好的方法可能是堅持選擇它們的一種方式,但靈活性的缺乏可能對您不適用。
你可以,而不是僅僅寫一個不可知元素的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