与jQuery $()方法相同的JavaScript的document.querySelector()?

Mod*_*ner 31 javascript jquery dom document model

我一直想知道为什么$(".myClass")当JavaScript有一个泛型时人们赞美jQuery的方法document.querySelector().这里有什么我想念的吗?为什么不直接使用该document对象?

我是JavaScript的新手,所以document.querySelector()我不知道有哪些类型的con ?

我真的很想知道,因为我之前遇到过这样的事情,我想知道它是否有助于我所处的情况:

var retrieve = function( s ) {
    return document.querySelector( s );
};

retrieve(".myClass").style.display = "block";
Run Code Online (Sandbox Code Playgroud)

注意

我根本没有反对jQuery的东西.事实上,我喜欢它.但是,当我刚刚尝试学习JavaScript时,我宁愿不使用简单的预制即用工具来欺骗自己.

任何帮助将非常感激!:-)

Mr.*_*irl 21

跨浏览器和传统支持.

如果您不想使用Jquery,也可以使用getElementsByClassName().用户发布的帖子有回复:KorRedDevil可能对您感兴趣.

我从你的帖子中取出了你的函数并使它返回一个数组.拥有该元素数组后,您所要做的就是遍历它们.你可以在这里试试.

Javascript:

var retrieve = function(className) {
    return document.getElementsByClassName(className);
};

var elements = retrieve('foo');
for (var i = 0; i < elements.length; i++)
    elements[i].style.background = '#dfd';
Run Code Online (Sandbox Code Playgroud)

加价:

<p class="foo">foo</p>
<p class="bar">bar</p>
<p class="foo">foo</p>
<p class="foo">foo</p>
<p class="bar">bar</p>
<p class="bar">bar</p>
Run Code Online (Sandbox Code Playgroud)

  • 这个问题和答案让我想起了http://youmightnotneedjquery.com/.它不是一年前出现的,但可能对"未来的人"感兴趣. (3认同)

Joh*_*ers 13

大约十年前,顶级浏览器分别是IE6,Netscape 8和Firefox 1.5.在那些日子里,几乎没有跨浏览器方式从DOM中选择元素Document.getElementById().

因此,当jQuery 在2006年发布时,它是非常具有革命性的.当时,jQuery为如何轻松选择/更改HTML元素和触发事件设置了标准,因为它的灵活性和浏览器支持是前所未有的.

现在,十多年后,许多使jQuery如此受欢迎的功能已经包含在JavaScript标准中.$selection.on()您现在可以使用而不是jQuery EventTarget.addEventListener().而不是jQuery $(),你现在可以使用Document.querySelectorAll()......等...这就引出了为什么我们应该使用jQuery的问题.事实上,人们越来越想知道我们是否应该使用jQuery.所以,如果你认为你很好地理解JavaScript而没有jQuery,请做!不要觉得被迫使用jQuery,只是因为有很多人在做这件事!

无论如何,要理解为什么jQuery如此受欢迎,了解我们的来源非常重要!