首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么jQuery内部需要Sizzle?

为什么jQuery内部需要Sizzle?
EN

Stack Overflow用户
提问于 2020-10-19 22:41:17
回答 1查看 371关注 0票数 0

当我查看jQuery代码源代码时,我对西泽-产生了兴趣,这是一个jQuery用于选择DOM元素的CSS选择器引擎库。因此,我的问题是,为什么jQuery包括一个只用于选择DOM元素的完整库?哪些特性引入了Sizzle,让我们的jQuery在内部使用它?

为了回答这个问题,我对口吻和他的特性做了一些研究,Sizzle的主要功能是Sizzle(selector),这个函数返回一个类似数组的对象,它包含一些方法,允许您对您隔离的DOM元素进行操作,如果您的应用程序频繁地访问DOM,这实际上是非常有用的。但是,在我看来,这不值得包含一个20的代码,我知道口吻也涵盖了不支持Document.querySelectorAll函数的旧浏览器版本,但我仍然不相信!

实际上,您可以在几行代码中完成Sizzle所做的(模拟概念),我已经编写了一个基于querySelectorAll的非常简单的示例

代码语言:javascript
复制
var Select = function(selector) {
    if (typeof selector !== 'string') throw 'selector must be of type string';

    var client = function() {
        var eles = document.querySelectorAll(selector), i = eles.length;

        this.length = eles.length;

        while(i--) {
            this[i] = eles[i];
        }
    };

    client.prototype = Array.prototype;

    return new client();
};

console.log(Sizzle('div').includes(document.querySelector('div'))); // true
console.log(Select('div').includes(document.querySelector('div'))); // true

var divs = Select('div'); 

divs.forEach(function(div) {
    div.textContent = 'Changed!!';     
});

那么,为什么jQuery仍然使用Sizzle呢?document.querySelectorAlldocument.querySelector现在可以在现代浏览器中使用,为什么jQuery仍然依赖于Sizzle呢?

注意:有一个类似于这个的老问题,但是,我对答案并不满意,因为它更多地关注什么是Sizzle,以及可以做什么?,而不是为什么jQuery使用Sizzle?

我希望我的问题是清楚和对不起我的糟糕的英语,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-20 01:11:24

jQuery的选择器语法包括许多CSS选择器的扩展,例如:input:selected。您可以看到列表这里。这些扩展是用Sizzle实现的。

如果可以的话,jQuery将使用querySelectorAll(),但如果有必要,将返回到Sizzle。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64435993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档