本次博客记录一个简单的"jQuey"的实现方式,来加深对jQuery的理解:

代码:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<style type="text/css">
.red{
color:red;
}
</style>
<body>
<div>你好</div>
<div>你好</div>
</body>
<script type="text/javascript">
window.jQuey = function (selectorOrNode){
var nodes = {}
// 判断用户传进来的是个字符串还是一个节点
if (typeof selectorOrNode === 'string'){
var temp = document.querySelectorAll(selectorOrNode)
for (var i=0; i < temp.length; i++){
nodes[i] = temp[i]
}
nodes.length = temp.length
}else if(selectorOrNode instanceof Node){
nodes = {
0:selectorOrNode,
length:1
}
}
// 添加单个属性
nodes.addClass = function(newClass){
for (var i=0; i<nodes.length; i++){
nodes[i].classList.add(newClass)
}
}
// 设置文本
nodes.setText = function(text){
for (var i=0; i<nodes.length; i++){
nodes[i].textContent = text
}
}
return nodes
}
window.$ = jQuey
var $div = $('div')
$div.addClass('red')
$div.setText("hi") </script>
</html>

 

实现步骤:

1.首先我们创建一个函数并给了window.jQuey,这样我们就可以直接使用jQuery.call来直接调用函数了。

2. 创建了一个空对象 nodes;

3.判断传入实参的类型,如果是一个字符串,就通过选择器来获取节点们,通过for循环,来构造我们想要的nodes,并指定length,如果是一个节点,我们就直接将这个节点放到第0个位置,并指定length为1;

4.这里我们实现了两个方法, 添加单个属性的addClass和设置节点内文本的setText,将这两个函数作为值给了nodes的两个键addClass和setText,然后返回对象;

5.为了更像jQuery,我们将jQuery给了window.$,这样我们就可以直接使用$('div')获取我们所定义的jQuery对象和使用对象的方法。

效果图:

实现一个简单的"jQuery"的更多相关文章

  1. 编写一个简单的Jquery插件

    1.实现内容 定义一个简单的jquery插件,alert传递进来的参数 2.插件js文件(jquery.showplugin.js) (function ($) { //定义插件中的方法 var me ...

  2. 一个简单的jQuery插件开发实例

    两年前写的一个简单的jQuery插件开发实例,还是可以看看的: <script type="text/javascript" src="jquery-1.7.2.m ...

  3. layer —— 一个简单的jQuery弹出层插件

    layer的使用 4.24更新:注意:layer现在有旧版1.8.5版本和新版本3.0版本的,对应引入的JQ也要不同,相对应的JQ引入1.1和3.1,否则JQ会出问题 4.21更新: 解答4-19的问 ...

  4. 怎样实现一个简单的jQuery编程

    第一步:在head中载入jQuery框架 <script type="text/javascript"  src="jQuery文档所在的绝对路径"> ...

  5. 一个简单的jQuery回调函数例子

    jQuery回调函数简单使用 比如说,我们想要点击某个按钮后触发事件, 先把一些指定内容给隐藏掉, 然后跳出相关信息的对话框. 如果使用普通的方法, 不用回调函数的话, 会有怎么样的效果呢? 效果是先 ...

  6. 自己写的一个简单的jQuery提示插件

    代码: /** * 2014年11月13日 * 提示插件 */ (function ($) { $.fn.tips = function (text) { var divtipsstyle = &qu ...

  7. 图片延迟加载并等比缩放,一个简单的JQuery插件

    使用方法: $(".viewArea img").zoom({height:74,width:103}); (function($){ $.fn.zoom = function(s ...

  8. 一个简单的jquery左右列表内容切换应用

    选中左边某个选项点击添加,即可将选中项添加到右边文本框中,点击选中全部即可将全部选项移到右边,移除按钮功能相同. html代码: <div id="main"> < ...

  9. 一个简单的jquery ajax表单提交 带数据校验 layer弹框提示

    <input type="hidden" id="url" value="index.php"/> <form id=&q ...

随机推荐

  1. Vsual Studio 高版本打开低版本项目的方法

    https://www.cnblogs.com/jmliao/p/5594179.html

  2. asp.net Frameset框架集的嵌套使用

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Frame.aspx.cs& ...

  3. VS2015 IIS Express 无法启动 解决办法(转)

    因为安装各种乱七八糟的软件,然后不小心把IIS Express卸载掉了,网上下载了一个IIS Express 7,安装之后本地使用VS 2015无法启动调试,F5 无法启动IIS, 再次F5调试,没有 ...

  4. OpenStack 业务链networking-sfc介绍 (2) - 底层原理

    原文链接:https://blog.csdn.net/bc_vnetwork/article/details/65630475 1.  SFC底层实现原理 port chain和ovs driver/ ...

  5. django系列6--Ajax04 请求设置(设置csrf_token)

    Ajax请求设置csrf_token 官方文档 csrf_token: https://docs.djangoproject.com/en/1.11/ref/csrf/ CSRF 跨站请求攻击,简单地 ...

  6. pyppeteer初尝滋味

    最近在爬几个电商平台网站用的selenium一登录就会有验证,目前这些网站对selenium检测很严格 因为不少大网站有对selenium的js监测机制.比如navigator.webdriver,n ...

  7. 【Oracle 12c】最新CUUG OCP-071考试题库(55题)

    55.(13-3) choose the best answer: Which statement is true regarding the SESSION_PRIVS dictionary vie ...

  8. yield 学习

    什么是生成器 生成器是可以迭代的,但是你只可以读取它一次 ,因为它并不把所有的值放在内存中,它是实时地生成数据. yield 理解 通常的for...in...循环中,in后面是一个数组,这个数组就是 ...

  9. C++多线程编程一

    1.C++多线程初步: #include <iostream> #include <thread> #include <Windows.h> using names ...

  10. Eclipse署动态web项目方法

    和MyEclipse不一样,在Eclipse中做的Web项目默认是不支持将项目发布到Web服务器上的,会发布到工作空间的某个目录,因此无法在外部启动Tomcat来运行Web项目,只有打开Eclipse ...