Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScriptWebAPI与用于DOM选择/操作的jQuery_Javascript_Jquery_Dom - Fatal编程技术网

JavaScriptWebAPI与用于DOM选择/操作的jQuery

JavaScriptWebAPI与用于DOM选择/操作的jQuery,javascript,jquery,dom,Javascript,Jquery,Dom,关于DOM遍历/选择/操作的最佳实践是什么?如果我不止一次地针对同一组元素来做某事,我应该只坚持一种选择它们的方法吗 例如: var slidesHTML = document.getElementsByClassName("slide"); //HTMLCollection var slidesNODE = document.querySelectorAll("slide"); //NodeList var slidesJQUERY = $(".slide"); //jQuery object

关于DOM遍历/选择/操作的最佳实践是什么?如果我不止一次地针对同一组元素来做某事,我应该只坚持一种选择它们的方法吗

例如:

var slidesHTML = document.getElementsByClassName("slide"); //HTMLCollection
var slidesNODE = document.querySelectorAll("slide"); //NodeList
var slidesJQUERY = $(".slide"); //jQuery object
现在,当我想调用jQuery方法时,我将这些元素作为目标;当我想调用NodeList方法时,我将再次作为目标;当我想调用HTMLCollection方法时,我将再次作为目标

这似乎是多余的,感觉像是糟糕的做法


然而,如果我一次选择一组元素,我将不得不重写我想从头调用的所有其他方法,这似乎有些过分。

虽然更好的方法可能是坚持选择它们的一种方法,但缺乏灵活性可能对您不起作用

您可以只编写一个不可知元素getter来获取元素并以您想要的格式返回它们:

var getElements=函数getElements(选择器,格式){
var元素;
if(format.toLowerCase()=“htmlcollection”){
elements=document.getElementsByClassName(选择器);//HTMLCollection
}
if(format.toLowerCase()=“节点列表”){
elements=document.queryselectoral(选择器);//节点列表
}
if(format.toLowerCase()=“jquery”){
元素=$(选择器);//jQuery对象
}
返回元素;
};
...
//同时,在代码的另一部分。。。
var slidesHTML=getElements(“幻灯片”、“HTMLCollection”);
var slidesNODE=getElements(“.slide”、“NodeList”);
var slidesJQUERY=getElements(“.slide”、“jQuery”);
就我个人而言,我发现
HTMLCollection
NodeList
集合在大多数情况下没有什么价值,因此对于我不使用jQuery(或类似库)的项目,我只使用以下内容:

var-elements=Array.prototype.slice.call(document.queryselectoral(选择器));

这种方法允许我使用CSS选择器语法的灵活性(和特殊性)来获取DOM元素,并将它们拉回到元素的
数组
,在该数组中迭代它们或对它们执行其他操作是很简单的。

为什么您最终会得到这样一个采用jQuery对象的完全不同的方法集合,节点列表和HTMLCollections?您真的需要这些不同的参数类型吗?这似乎取决于具体情况,即没有一个明确的答案
$(“.slide”)[index]
$(“.slide”)。获取(index)
提供对
DOM
object@JamesThorpe因为我在学习?我想要一些关于最佳实践的反馈?根据我的帖子,我多次瞄准相同的元素,因为我想使用与该类型相关联的方法。除了感觉多余。有道理。非常感谢。