百度前端技术学院2015JavaScript基础部分实现自己的小型jQuery
// 实现一个简单的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的更多相关文章
- 百度前端技术学院2015JavaScript基础部分代码实现
2. JavaScript数据类型及语言基础(一) 2.1 任务描述 创建一个JavaScript文件,比如util.js: 实践判断各种数据类型的方法,并在util.js中实现以下方法: / ...
- 百度前端技术学院2015JavaScript基础部分-BOM
5.1 任务描述 实现以下函数 // 判断是否为IE浏览器,返回-1或者版本号 function isIE() { // your implement } // 设置cookie function s ...
- 百度前端技术学院-基础-day1
2020.9.14 今天我开始在百度前端技术学院学习基础课程. 先立一个Flag,希望我能在30天之内学完前四十天的课程,后续课程再一天一节. 第一天的内容主要是提供了很多基础学习的网页,比如W3sc ...
- 百度前端技术学院(IFE)2016春季学期总结
今天(5月16日)作为第八个提交者提交了任务五十:RIA微型问卷管理平台 这样一个综合性的大任务,宣告我的IFE春季学期课程学习顺利完成.其实任务五十并不复杂,现在再让我来做,可能一周不到就写出来了, ...
- 百度前端技术学院—-小薇学院(HTML+CSS课程任务)
任务一:零基础HTML编码 课程概述 作业提交截止时间:04-24 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理 ...
- 百度前端技术学院task1.10
任务十:Flexbox 布局练习 面向人群: 有一定HTML及CSS基础的同学 难度: 中 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容 ...
- 通过Github Pages在线查看百度前端技术学院完成的任务成果
前言 .note-content {font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHe ...
- 百度前端技术学院-task1.3源代码
因为其中有图片,所以就给有图片的位置加了边框和设置了大小,这样哪怕图片不显示也可以知道在哪里. <!DOCTYPE html> <html> <head> < ...
- 百度前端技术学院-基础-day2
2020.9.15 今天是学习前端基础技术的第二天,今天制作了一个在线简历,纯html的那种.帮助我复习了以前的基础知识,也增加了新的知识点,比如制作列表可以用fieldset来整合数据. 我的在线简 ...
随机推荐
- mySQL 50个查询系列
http://bubufx.com/detail-1749088.html http://www.jb51.net/article/67932.htm Student(S#,Sname,Sage,Ss ...
- angularJS中的ui-router和ng-grid模块
关于angular的教程,学习了一下angular的ui-router和ng-grid这两个模块,顺便模仿着做了一个小小的东西. 代码已经上传到github上,地址在这里https://github. ...
- PHP动态实例化对象并向构造函数传递参数
在框架开发,模块化开发等场合,我们可能有一种需求,那就是在PHP运行时动态实例化对象. 什么是动态实例化对象呢?我们先来看一下PHP有一种变量函数(可变函数)的概念,例如如下代码: function ...
- 一句话简单理解javascript中的原型对象
通过构造函数F创建的对象实例p 这个对象p的原型对象是 构造函数中prototype属性指向的对象s,这个对象p中也有个非标准的__proto__属性指向构造函数prototype属性所指向的对象s, ...
- MR21、MR22和CK24的区别
MR21和CK24都是用于修改物料标准价,但两者功能和用法上有所区别:MR21是直接更改单价, CK24是在CK11N或CK40N价格评估的基础上的价格核发, CK24记录价格评估, 价格评估在做 ...
- spark 安装
Spark 集群安装 1.上传tar包,解压tar包 tar -zxvf spark-2.0.0-bin-hadoop2.6.tgz 2.修改配置文件(这是yarn模式) 进入 spark/conf ...
- angular-ui-router中的$stateProvider设置
$stateProvider .state('contacts.list', { url: '', templateUrl: 'contacts.list.html' }) .state('conta ...
- JavaWeb前端:JQuery
Jquery基本概念 什么是Jquery Jquery是一个开源的,集成了Javascript,CSS,DOM,AJAX的前端框架:它诞生于2006年,最初是为了简化JavaScript开发而产生的, ...
- (01-02) odoo8.0_Ubuntu14.04_nginx反代理设置
作者:陈伟明联系 : QQ 942923305 | 微信 toby942923305E-mail: cwm.win@hotmail.com============================== ...
- Discuz论坛安全加固浅析
[51CTO专稿]Discuz! 论坛以其功能完善.效率高效.负载能力,深受被大多数的网站喜爱和青睐.无独有隅,笔者所维护的论坛就是用discuz! 来构建的,从接手时候的7.2到现在x2.0,经历了 ...