// 实现一个简单的Query
function $(selector) {
var firstChar = selector.charAt();
if (firstChar == "#") {
var len = selector.split(" "); if (len.length == ) {
return document.getElementById(selector.slice(,selector.length));
}
else {
var resu = [];
var getId = document.getElementById(len[].slice(,len[].length));
for (var i = ; i < getId.children.length; i++) {
if(getId.children[i].className == len[].slice(,len[].length)) {
resu.push(getId.children[i]);
};
}
return resu[];
}
}
else if (firstChar == ".") {
return document.getElementsByClassName(selector.slice(,selector.length))[];
}
else if (firstChar == "[") {
if (selector.match(/=/)) {
var index = selector.indexOf("=");
var cao1 = selector.slice(,index);
var cao2 = selector.slice(index+,selector.length-);
var all = document.getElementsByTagName('*');
var res1 = [];
for (var i = ; i < all.length; i++) {
if(all[i].getAttribute(cao1)&&all[i].getAttribute(cao1) == cao2) {
res1.push(all[i]);
}
}
return res1[];
}
else {
var cao = selector.slice(,selector.length-);
var all = document.getElementsByTagName('*');
var res = [];
for (var i = ; i < all.length; i++) {
if(all[i].getAttribute(cao)) {
res.push(all[i]);
}
}
return res[];
}
}
else {
return document.getElementsByTagName(selector)[];
}
} // 给一个element绑定一个针对event事件的响应,响应函数为listener
function addEvent(element, event, listener) {
// your implement
element.addEventListener(event,listener,false);
} // 移除element对象对于event事件发生时执行listener的响应
function removeEvent(element, event, listener) {
// your implement
element.removeEventListener(event,listener,false);
} // 实现对click事件的绑定
function addClickEvent(element, listener) {
// your implement
addEvent(element,"click",listener);
} // 实现对于按Enter键时的事件绑定
function addEnterEvent(element, listener) {
// your implement
element.onkeyDown = function(event) {
var e = event || window.event;
if (e&&e.keyCode == ) {
listener();
}
}
} function delegateEvent(element, tag, eventName, listener) {
$.on(element,eventName,function(){
var e = event ||window.event;
var target = e.target ||e.srcElement;
if (target.tagName == tag) {
listener();
}
})
}

$.on = addEvent;
$.un = removeEvent;
$.click = addClickEvent;
$.enter = addEnterEvent;
$.delegate = delegateEvent;

 

百度前端技术学院2015JavaScript基础部分实现自己的小型jQuery的更多相关文章

  1. 百度前端技术学院2015JavaScript基础部分代码实现

    2. JavaScript数据类型及语言基础(一)    2.1 任务描述 创建一个JavaScript文件,比如util.js: 实践判断各种数据类型的方法,并在util.js中实现以下方法:  / ...

  2. 百度前端技术学院2015JavaScript基础部分-BOM

    5.1 任务描述 实现以下函数 // 判断是否为IE浏览器,返回-1或者版本号 function isIE() { // your implement } // 设置cookie function s ...

  3. 百度前端技术学院-基础-day1

    2020.9.14 今天我开始在百度前端技术学院学习基础课程. 先立一个Flag,希望我能在30天之内学完前四十天的课程,后续课程再一天一节. 第一天的内容主要是提供了很多基础学习的网页,比如W3sc ...

  4. 百度前端技术学院(IFE)2016春季学期总结

    今天(5月16日)作为第八个提交者提交了任务五十:RIA微型问卷管理平台 这样一个综合性的大任务,宣告我的IFE春季学期课程学习顺利完成.其实任务五十并不复杂,现在再让我来做,可能一周不到就写出来了, ...

  5. 百度前端技术学院—-小薇学院(HTML+CSS课程任务)

    任务一:零基础HTML编码 课程概述 作业提交截止时间:04-24 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理 ...

  6. 百度前端技术学院task1.10

    任务十:Flexbox 布局练习 面向人群: 有一定HTML及CSS基础的同学 难度: 中 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容 ...

  7. 通过Github Pages在线查看百度前端技术学院完成的任务成果

    前言 .note-content {font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHe ...

  8. 百度前端技术学院-task1.3源代码

    因为其中有图片,所以就给有图片的位置加了边框和设置了大小,这样哪怕图片不显示也可以知道在哪里. <!DOCTYPE html> <html> <head> < ...

  9. 百度前端技术学院-基础-day2

    2020.9.15 今天是学习前端基础技术的第二天,今天制作了一个在线简历,纯html的那种.帮助我复习了以前的基础知识,也增加了新的知识点,比如制作列表可以用fieldset来整合数据. 我的在线简 ...

随机推荐

  1. miniui

    //android提供了一个库minui用于简单的UI输出,源码在bootable/recovery/minui中, //gr_init()和gr_font_size()为minui库提供方法,gr_ ...

  2. 关于HTML5你必须知道的28个新特性,新技巧以及新技术

    1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcapt ...

  3. 转:如何实现一个malloc

    如何实现一个malloc 转载后排版效果很差,看原文!   任何一个用过或学过C的人对malloc都不会陌生.大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉. ...

  4. PHP JSON

  5. Oracle Minus关键字

    Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 ...

  6. Michael Schatz - 序列比对课程

    Michael Schatz - Cold Spring Harbor Laboratory 最近在研究 BWA mem 序列比对算法,直接去看论文,看不懂,论文就3页,太精简了,好多背景知识都不了解 ...

  7. AutoCAD Civil 3D 中缓和曲线的定义

    本文对AutoCAD Civil 3D中缓和曲线的定义进行了整理. 原英文网页如下: https://knowledge.autodesk.com/support/autocad-civil-3d/l ...

  8. SAP公司间采购订单关联交货单报表源代码(自己收藏)

    SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } ...

  9. Java主函数定义

    public static void main(String[] args){} public: main主方法是由jvm来调用的,jvm实际也是一个程序,为了保证jvm能够在任何情况下来调用主函数. ...

  10. 关于正则表达式中参数/g /m的详细分析和例子详解

    总结1:参数/g的用法 表达式加上参数g之后,表明可以进行全局匹配,注意这里"可以"的含义.我们详细叙述: 1)对于表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行 ...