• JavaScipt 源码解析 Sizzle选择器


    jQuery的定位就是一个DOM的操作库,那么可想而知选择器是一个至关重要的模块。Sizzle,作为一个独立全新的选择器引擎,出现在jQuery 1.3版本之后,并被John Resig作为一个开源的项目,可以用于其他框架:Mool、Dojo、YUI等。

    jQuery是总入口,选择器支持9种方式的处理:

    1.$(document)   
    2.$('<div>’)
    3.$('div')
    4.$('#test')
    5.$(function(){})
    6.$("input:radio", document.forms[0]);
    7.$('input', $('div'))
    8.$()
    9.$("<div>", {
             "class": "test",
             text: "Click me!",
             click: function(){ $(this).toggleClass("test"); }
          }).appendTo("body");
    10.$($('.test'))

    jQuery这个选择器重构了几次后,现在逻辑结构相当的清晰了,一看大概就知道,不能不说jQuery的反模式非职责单一深受开发者喜欢,一个接口承载的职责越多内部处理就越复杂了,jQuery查询的对象是dom元素,查询到目标元素后,如何存储?

       ☑  查询的到结果储存到jQuery对象内部,由于查询的dom可能是单一元素,也可能是合集

       ☑  jQuery内部应该要定义一个合集数组,用于存在选择后的dom元素

       ☑  当然啦,根据API,jQuery构建的不仅仅只是DOM元素,还有HTML字符串、Object、[] 等等…

     

    sizzle过滤器

    ID TAG CLASS ATTR CHILD PSEUDO

     

     

     

  • 相关阅读:
    【BZOJ3270】【高斯消元】博物馆
    【CODECHEF】【phollard rho + miller_rabin】The First Cube
    【BZOJ3884】【降幂大法】上帝与集合的正确用法
    【CF521C】【排列组合】Pluses everywhere
    mfc的任务栏的隐藏和显示
    Git配置过程
    AOP概念和7个专业术语
    文件操作IO流
    可扩展标记性语言XML
    深入理解多态
  • 原文地址:https://www.cnblogs.com/huangyin1213/p/6229438.html
Copyright © 2020-2023  润新知