Zepto.js_开始
针对移动端,处理了一系列如 click 点击延迟 毫秒
响应执行快
目前 API 完善的框架中体积最小的一个(能用于项目的)
- 与 jQuery
- 相同点: 语法与 jQUery 大部分一样,相当于 jQuery 的子集,都是以 $ 核心函数
- 不同点:
- zepto 体积更轻,针对移动端,拥有独特的移动端事件,且以上特点 zepto 全部适用
- 引入 zepto.js 核心库(zepto、ajax、event、form、ie)以后,还须引入相关附属库(如: touch.js)
- jQuery 更重,也更重要,API 完善
- 核心 $ / jQuery
- 两大利器
- jQuery 函数
- $(function(){});
- $("#box");
- $('div');
- $("<p>123456</p>");
- jQuery 对象
- $.ajax(); $.get(); $.post();
- $.isArray(obj) // 判断是否为数组
- $.each(arr, function(index, each){}); // arr.forEach(each, index, self);
- $.trim(" Hello World "); // "Hello World"
- $.find("div"); // 获取页面所有的 <div> 元素
- var divPs = $("div").find("p"); // 获取页面所有父元素为 div 元素的 p元素
- 链式调用的核心是,返回值为 目标对象
- $.size();
- $.length;
- $.get(); $box.get(0); $box[0] 转化为 DOM 对象
- $.index();
- jQuery 函数
- jQuery 的 attr 与 prop
prop() 常用于布尔值属性的操作 checked seleted disabled enabled
attr() 常用于自定义属性,获取 布尔值属性 时如果无则返回 undefined,prop 则不会出现这个问题
- zepto 的 attr 与 prop
在 zepto 中,用 attr() 也可以获取 布尔值属性,当未定义属性时,返回的是 false
prop 则与 jQuery 的 prop 完全相同
- 布尔值属性的操作还是优先使用 prop,prop 的优先级高于 attr
- 按钮延时可点击( 坑1. removeProp() 大于 zepto1.2 版本才可用。。。所以移除任何属性,都建议使用 removeAttr() )
<!-- javascript 代码 -->
<script type="text/javascript" src="./js/zepto/zepto.js"></script>
<script type="text/javascript" src="./js/zepto/touch.js"></script>
<script type="text/javascript" src="./js/index.js"></script>
<script>
$("#btn").on("touchstart", function(){
$("#btn").prop("disabled", true);
setTimeout(function(){
$("#btn").removeAttr("disabled");
}, 2000);
});
</script>- DOM 操作
- 正常
$("#box").append("<p class="blue_line">Hello World</p>");
- zepto 新用法( jQuery 不支持在增加 DOM 元素时,添加配置对象,影响 DOM 结构)
$newEle = $("<p class="blue_line">Hello World</p>", {class:"blue_line red_font", id:"new_ele"});
$("#box").append($newEle);
- $.each
正常
$.each(数组, function(index, eachValue, arr){});
$.each(对象, function(attr, eachValue, obj){});
不能遍历字符串、json 对象(本质也是字符串)
var jsonObj = JSON.stringify({name:"浩克", age:"31"});
zepto 可以使用 $.each() 遍历字符串、json
$.each(字符串, function(index, eachChar, str){});
$.each(jsonObj, function(attr, eachValue, obj){});
- $("#box").offset();
在 jQuery 中,获取元素相对于视口的偏移量 {left: "200", top: "100"},只对占位的元素可用,否则返回(0, 0)
在 zepto 中,返回的是一个对象,返回的的是一个对象 {left: "200", top: "100", width: "50", heigth: "50"},其中 width、height 包含 padding、border
- $("#box").width() 和 $("#box").height();
在 jQuery 中返回的是 content-box 的宽高
在 zepto 中返回的是 content-box + padding-box 的宽高
且 zepto 中 没有 innerWidth() 和 innerHeight() 方法
- $("#box").css("border-width");
- $("#box").css("border-height"); jQuery 中返回 undefined,zepto 中返回 null
- display: none; 隐藏元素的 width / height
jQuery 中可以拿到隐藏元素的 width / height
zepto 中
不能用 .width() / .height() 获取到隐藏元素的 width / height
但是可以用 .css("width"); / .css("height") 获取到 width / height
- 事件委派----直接使用 $("ul").on("touchstart", "li", func);
使用父元素监听子元素的事件触发
最终触发的是 子元素,使用 event.target 获取触发元素
一次绑定一劳永逸
在 jQuery 中
$("ul").live("click", "li", func); 事件委派在 jQuery-1.7 中剔除了 .live() 和 die()
$("ul").delegate("li", "click", func); $("ul").undelegate("li", "click", func);
$("ul").on("click", "li", func); 其中 this 指向 触发事件的 li
在 zepto 中
剔除了 .live() 和 .delegate() 的相关方法(动物被袭击)
- 坑2.
- zepto 委托的事件依次进入队列,在执行本元素触发事件时,还会触发满足一定条件的事件
1. 委托了同一个父元素 或者 触发元素的事件范围小于同类型元素的事件范围
2. 同一个事件
3. 委派的事件产生了关联
如果委托了同一父元素,则先绑定的会触发后绑定的
如果委派范围有包含关系,则范围小的会触发范围大的事件
- zepto 封装的 touch 方法
.tap 在 document 上绑定 touch 事件 实现单击
.singleTap() 单击事件
.doubleTab() 双击事件 如果还要实现单击事件时,必须使用 .singleTab()____使用 .tap() 的话,双击无效
.longTap() 当元素被长按超过 750ms 时触发
.swipe() .swipeUp() .swipeDown() .swipeLeft() .swipeRight()
当在元素上滑动 30px 以上时触发
- 正常其情况下,手机会将滑动识别成翻页
- 此时需要在目标元素设置 css { touch-action: none; }
- 此时又出现一个新问题: 滑动滚动条失效了____解决:
zepto 的 <form>
var data = $().serialize(); // 序列化成字符串 返回表单项键值对 name=kjf&password=123&rember=true
var data = $().serializeArray(); // 序列化成字符串 返回表单项键值对 ["name=jf", "password=123", "rember=true"]
var data = $().serializeArray(); // 序列化成字符串 返回表单项键值对 ["name=jf", "password=123", "rember=true"]
Zepto.js_开始的更多相关文章
- TypeScript为Zepto编写LazyLoad插件
平时项目中使用的全部是jQuery框架,但是对于做webapp来说jQuery太过于庞大,当然你可以选择jQuery 2.*针对移动端的版本. 这里我采用移动端使用率比较多的zepto框架,他跟jqu ...
- zepto/jQuery、AngularJS、React、Nuclear的演化
写在前面 因为zepto.jQuery2.x.x和Nuclear都是为现代浏览器而出现,不兼容IE8,适合现代浏览器的web开发或者移动web/hybrid开发.每个框架类库被大量用户大规模使用都说明 ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
- jquery和zepto的扩展方法extend
jquery和zepto的扩展方法extend 总结下jQuery(3.1.1)和zepto(1.1.6)到底是如何来开放接口,使之可以进行扩展,两者都会有类型判断,本文使用简单的类型判断,暂不考虑兼 ...
- [原创]zepto打造一款移动端划屏插件
最近忙着将项目内的jquery 2换成zepto 因为不想引用过多的zepto包,所以花了点时间 zepto真的精简了许多,源代码看着真舒服 正好项目内需要一个划屏插件,就用zepto写了一个 逻辑其 ...
- zepto之tap事件点透问题分析及解决方案
点透现象出现的场景: 当A/B两个层上下z轴重叠,上层的A点击后消失或移开(这一点很重要),并且B元素本身有默认click事件(如a标签)或绑定了click事件.在这种情况下,点击A/B重叠的部分,就 ...
- zepto弹出层组件
html: <!DOCTYPE html> <html> <meta charset="utf-8"> <title></ti ...
- 原生JS实现购物车结算功能代码+zepto版
html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- zepto返回顶部动画
点击返回顶部 function goTop(acceleration, time) { acceleration = acceleration || 0.1; time = time || 16; v ...
随机推荐
- 第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等)
一. 理解并发机制 1. 什么是并发,并发与多线程有什么关系? ①. 先从广义上来说,或者从实际场景上来说. 高并发通常是海量用户同时访问(比如:12306买票.淘宝的双十一抢购),如果把一个用户看做 ...
- SpringBoot系列: 设计Restful风格的API
RESTful 架构REST 并非一种技术或规范, 而是一种架构风格, 如果一个架构符合Rest的约束条件和原则, 就可以称作是 RESTful 架构. REST全称是Representational ...
- [物理学与PDEs]第1章第9节 Darwin 模型 9.1 拟静电模型及其修正形式
1. 拟静电模型: 当 $\cfrac{\omega}{c}\ll \cfrac{1}{c}\lra \omega\ll \cfrac{c}{l}$ 时, $$\bex \cfrac{1}{c}\cf ...
- CF611D lcp+dp
本篇博客只是留个辣鸡的自己标记一下,误入的同学请出门左转博客 https://blog.csdn.net/loy_184548/article/details/50865777 代码神马的也是复制啊 ...
- centos7.2 环境下两个数据库的安装部署
首先假如服务器上已经有一个 数据库mysql5.6.29,端口是3306. 接下来在安装一个mysql数据库,端口是3307的. 一:创建mysql编译目录 mkdir /usr/local/mysq ...
- 使用Notepad++开发Java程序
安装NppExec插件(已安装可跳过) 插件下载地址 我选择了最新的RC2 根据软件位数下载对应的版本,我直接下载了32位对应的dll 解压后里面有两个文件夹和一个dll文件 拷贝到Notepad++ ...
- Java的三大特性
一.封装性 含义:对外不可见,保护属性和方法不被外部多看见 实现:通过关键字private声明,用get.set方法为外部访问. 引用的传递: static关键字:修饰属性(全局属性):修饰方法(直接 ...
- Python3 字符串与hex之间的相互转换
在字符串转换上,python2和python3是不同的,在查看一些python2的脚本时候,总是遇到字符串与hex之间之间的转换出现问题,记录一下解决方法. 1. 在Python2.7.x上,hex字 ...
- pythonのsqlalchemy多对多关系
现在来设计一个能描述“图书”与“作者”的关系的表结构,需求是 一本书可以有好几个作者一起出版 一个作者可以写好几本书 #!/usr/bin/env python from sqlalchemy imp ...
- android studio发布项目到github
点击file setting ,打开对话框,如下,判断git是否安装成功 选择GitHub,填写github地址及密码 发布项目: