`
zhangyaochun
  • 浏览: 2613963 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jq的选择器流程分析开篇

阅读更多

本文简单地分析以下jquery的选择器流程

 

为了考量jq的版本优化,这篇的代码分析来自jq1.3

 

 

/*
 * @param selector 
 * @param context
 * @info $的入口
*/
var jQuery = window.jQuery = window.$ = function(selector,context){
       return new jQuery.fn.init(selector,context);
}

 

 

var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/;

jQuery.fn = jQuery.prototype = {
       /*
        * @name init
        * @param selector
        * @param context
       */
       init:function(selector,context){
             //默认是document
             selector = selector || document;
             
             //selector为DOM Element
             if(selector.nodeType){
                   this[0] = selector;
                   this.length = 1;
                   this.context = selector;
                   return this;
             }


             //selector为string
             if(typeof selector === "string"){
                   //比如#test 返回的match为["#test",undefined,undefined,"test"];
                  //比如<div id="test">test</div>返回的match为:['<div id="test">test</div>','<div id="test">test</div>','v',undefined];
                   var match = quickExpr.exec(selector);

                   if(match && (match[1] || !context)){

                         if(match[1]){
                              selector = jQuery.clean([match[1]],context);

                         }else{

                              //$("#ID")
                              var elem = document.getElementById(match[3]);
                              if(elem){
                                     if(elem.id != match [3]){
                                           return jQuery().find(selector);
                                     }

                                     var ret = jQuery(elem);
                                     ret.context = document;
                                     ret.selector = selector;
                                     return ret;

                              }
                              selector = [];
                         
                         }


                   }else{

                          //$(expr,[context])  ===>  $(content).find(expr)
                          return jQuery(context).find(selector); 
                   }                   

             }else if(jQuery.isFunction(selector)){

                   //很多简写的方式:$(function(){});
                    return jQuery(document).ready(selector); 
             }


             if(seletor.selector && selector.context){
                    this.selector = selector.selector;
                    this.context = selector.context;
             }

              return this.setArray(jQuery.makeArray(selector));
    
       }

}
 
 
 

 

 

 

 

分享到:
评论

相关推荐

    JQ 层次选择器

    本文将深入探讨JQ中的层次选择器,这是一种强大的工具,帮助开发者快速定位页面上的特定元素。 层次选择器是jQuery的核心功能之一,它允许我们根据元素在HTML文档结构中的位置来选取元素。下面我们将详细讲解几种...

    JQ 内容过滤选择器

    本文将深入探讨"JQ内容过滤选择器"这一关键知识点,它是jQuery选择器体系中的一个重要组成部分,用于从DOM树中筛选出符合特定条件的元素。 一、JQ内容过滤选择器概述 内容过滤选择器允许我们根据元素内部的文本或...

    JQ 子元素过滤选择器

    此外,对于标签“源码”和“工具”,可能涉及到的是使用jQuery选择器进行源代码分析或者开发辅助工具时的应用。例如,开发者可以利用jQuery选择器来解析HTML结构,找出需要操作的部分,或者构建自动化工具时,通过...

    JQ 属性选择器

    **jQuery 属性选择器详解** 在前端开发中,jQuery 是一个强大的 JavaScript 库,它极大地简化了 DOM 操作,其中包括选择元素。属性选择器是 jQuery 提供的一种高级选择器,用于根据元素的属性及其值来定位和操作...

    JQ选择时间插件

    "JQ选择时间插件"就是这样一个工具,它专注于时间选择的便捷性和灵活性,特别适合用于表单输入或者日程管理等场景。这个插件名为laydate,是一个基于jQuery的轻量级组件,它提供了丰富的选择类型和强大的自定义能力...

    jq 双日历插件

    jq 双日历插件日历选择器jq 双日历插件日历选择器jq 双日历插件日历选择器jq 双日历插件日历选择器jq 双日历插件日历选择器jq 双日历插件日历选择器jq 双日历插件日历选择器jq 双日历插件日历选择器jq 双日历插件...

    jq时间选择器jq时间选择器jq时间选择器

    "jq时间选择器"是指利用jQuery实现的一个功能,允许用户在网页上方便地选取日期或时间。这个功能在网页表单、日程安排、预订系统等场景中非常常见。 jQuery时间选择器通常基于插件实现,例如jQuery UI中的...

    基于jquery实现的地址选择器

    总结来说,基于jQuery实现的地址选择器是前端开发中常用的一个实用工具,它简化了用户输入多级地址的流程,提高了用户界面的交互性和易用性。通过理解和掌握其工作原理及使用方法,开发者可以更好地集成到自己的项目...

    JQ 表单对象属性过滤选择器

    本文将深入探讨“JQ表单对象属性过滤选择器”的概念,以及如何在实际开发中有效地利用它们。 一、jQuery选择器概述 jQuery选择器是其强大功能的核心之一,它允许开发者通过简洁的语法来选取DOM元素。选择器分为基本...

    jquery周历选择器

    本项目“jquery周历选择器”利用jQuery的灵活性和易用性,构建了一个适用于混合应用程序(Hybrid App)的周历选择器组件。 1. **周历选择器设计**: - 周历选择器通常用于日程管理或时间规划应用,显示一周的日期...

    jQuery时间选择器点击选择小时分钟代码

    在网页开发中,jQuery时间选择器是一个非常实用的工具,它允许用户通过点击来选取特定的小时和分钟,为表单输入提供了便利。这个“jQuery时间选择器点击选择小时分钟代码”很可能是一个实现这一功能的代码示例或者...

    jQuery选择器大全(48个代码片段 21幅图演示)

    **jQuery选择器大全** jQuery库以其易用性和强大的选择器功能而闻名,使得JavaScript开发者能够更轻松地操作DOM(文档对象模型)。以下是一份详细的知识点概述,涵盖了jQuery中的主要选择器及其应用。 1. **基本...

    jq高校联动下拉选择器

    "jq高校联动下拉选择器"是一个专门针对这种情况设计的解决方案,它利用JavaScript库jQuery(简称jq)来实现高效、便捷的交互体验。这个工具集成了全国省市大学的数据,为用户提供了一种方便的方式来选择他们所在的...

    jq 日期控件 可选择时间,日期,星期等等

    "jq 日期控件 可选择时间,日期,星期等等" 是一个专为JavaScript(js)环境设计的日期选择插件,它提供丰富的功能,让用户能够方便地选择日期、时间甚至是星期。下面我们将深入探讨这个主题。 首先,`jq`通常指的...

    jq的源码分析

    Sizzle是jq内置的选择器引擎,它实现了W3C CSS选择器规范,包括类选择器、ID选择器、属性选择器等。Sizzle的性能优化体现在其对文档的遍历和匹配算法上,如使用快速查找表和分块查找。 2. **DOM操作**:jq提供了...

    JQ focus选择器的使用

    **JQ focus选择器的详解** 在jQuery库中,`focus`选择器是一个非常实用的工具,用于选取当前获得焦点的元素或者在特定事件发生时获取焦点的元素。这个选择器是基于JavaScript的DOM(Document Object Model)中的`...

    jQuery基础选择器练习题

    本篇文章将深入探讨jQuery的基础选择器及其在实际编程中的应用,以帮助你更好地理解和掌握这些知识点。 首先,我们来了解一下jQuery的基本选择器。它们是用于选取HTML元素的最基础工具,包括: 1. **ID选择器**: ...

    JQ 基本过滤选择器

    **JQ基本过滤选择器详解** 在Web开发中,jQuery(简称JQ)是一个非常流行的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。其中,选择器是jQuery的核心功能之一,它允许我们高效地选取DOM...

    jQuery日期时间选择器

    在网页开发中,jQuery日期时间选择器是一种常用的交互组件,它允许用户方便地选择日期和时间,提升用户体验。本文将详细介绍基于Bootstrap 3的jQuery日期时间选择器,并提供相关知识点。 Bootstrap是Twitter推出的...

    jq时间选择.zip

    总结起来,"jq时间选择.zip" 提供了一个基于jQuery的flatpickr日期时间选择插件实例,它可以帮助开发者在网页中创建美观且实用的日期时间选择器。通过研究这个压缩包,我们可以深入理解jQuery插件的开发和使用,以及...

Global site tag (gtag.js) - Google Analytics