jq和zepto很相似有许多共同的api,zepto也出了很多与jq不一样的api,总的来说,两者更相似,但是zepto更轻量一点,正好公司也在用,复习这两个没错

  jq中的zepto的事件和ajax我没有整理,因为之前有专门的文章去详细的写了ajax和事件绑定的区别

  再学ajax--第一天

  再学ajax--第二天 | 基于php+mysql+ajax的表单注册、登录、注销

  JS进阶 | 分析JS中的异步操作

  面试 | 蚂蚁金服面试经历 也讲到了js中的绑定事件的区别bind、on、delegate,以及事件绑定 事件委托的区别等

  jquery复习

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style >
*{
margin:0;
padding: 0;
}
</style>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
/* jQuery([selector,[context]]) */
console.log($('div>p'));
$(document.body).css("background","black");
// 在文档的第一个表单中,查找所有的单选按钮
console.log($('input:radio',document.forms[0]))
/*jQuery(html,[ownerDocument])*/
$(function(){
$('<div>hello world</div>').appendTo('.test');
// 动态创建一个 div 元素(以及其中的所有内容),并将它追加到 body 元素中
$('<div>',{
"class":"test_valid",
text:"click me",
click:function(){
$(this).toggleClass("test2");
}
}).appendTo(".test")
// 创建一个 <input> 元素,同时设定 type 属性、属性值,以及一些事件。
$('<input>',{
type:'text',
val:"text",
focusin:function(){
// alert("focusin");
},
focusout:function(){
// alert("focusout");
}
}).appendTo(".test");
})
/* jQuery(callback)*/
$(function(){
// do something
// 等价于$(document).ready()
})
/* jQuery.holdReady(hold) */
// 延迟就绪事件,直到已加载的插件。
// $.holdReady(true);
// $.getScript("plugin.js",function(){
// $.holdReady(false)
// })
/* each(callback) */
$(function(){
$('.test > span').each(function(i){
// console.log(this);
// console.log($(this));
this.innerHTML="span"+i;
// $(this).toggleClass("span"+i);
// $(this).text("hello");
// 跳出遍历
// return false;
})
})
/* size() */
// jQuery 对象中元素的个数
console.log($("div").size());
console.log($('div').length);
/* selector、context 、get([index]) 、index([selector|element]) */
$(function(){
$("ul")
// 返回传给jQuery()的原始选择器
.append("<li>"+$('ul').selector+"</li>")
// 返回传给jQuery()的原始的DOM节点内容,即jQuery()的第二个参数。那么context指向当前的文档(document)。
console.log($('ul').context)
console.log($('ul',document.body).context)
console.log($('.innerTest>span').get(0));
// 选择文档中所有图像作为元素数组,并用数组内建的 reverse 方法将数组反向。
console.log($('.innerTest>span').get().reverse());
//传递一个DOM对象,返回这个对象在原先集合中的索引位置
console.log($('.innerTest>span').index(document.getElementById('bar')));
//传递一个jQuery对象
console.log($('.innerTest>span').index($('#bar')));
//传递一组jQuery对象,返回这个对象中第一个元素在原先集合中的索引位置
console.log($('.innerTest>span').index($('.innerTest>span:nth-child(2)')));
})
/*数据缓存data*/
$(function(){
// 没什么卵用
$('.data').data("div-data","data");
})
/*queue(element,[queueName])*/
$(function(){
$("#show").on('click',function(){
var n = $(".queue").queue("fx");
// 显示在匹配元素上执行的函数队列的个数
console.log(n.length);
})
function resuIt(){
$('.queue').show("slow");
$('.queue').animate({left:"+=200"},2000);
$('.queue').slideToggle(1000);
}
resuIt()
})
/*queue(element,[queueName]) jQuery.extend(object)*/
$(function(){
// 给选择器提供新方法
jQuery.fn.extend({
check:function(){
return this.each(function(){this.checked=true})
},
uncheck:function(){
return this.each(function(){this.checked=false})
}
})
// 扩展jQuery对象本身
jQuery.extend({
min:function(a,b){return a<b?a:b},
max:function(a,b){return a>b?a:b}
})
$(".innerTest>input[type=checkbox]").check();
$(".innerTest>input[type=radio]").uncheck();
console.log(jQuery.min(1,2));
console.log(jQuery.max(3,4));
})
/*属性相关*/
$(function(){
// attr
console.log($('.innerTest>input').eq(1).attr('type'))
$('.innerTest>span').eq(2).attr({class:"innerSpan","data-span":"innerSpan"})
// class的值为innerHTML的值
$('.innerTest>span').eq(2).attr("class",function(){return this.innerHTML}) // removeAttr
$('.innerTest>span').eq(0).removeAttr("class");
// prop 获取在匹配的元素集中的第一个元素的属性值。
console.log($(".innerTest>input[type='checkbox").prop('checked'));
// 禁用所有checkbox
$(".innerTest>input[type='checkbox']").prop('checked',function(i,val){
return !val;
})
// addClass
$(".innerTest>span:nth-child(5)").addClass("span5 span_5")
// 加上不同的class
$(".innerTest>span").addClass(function(){
return "span_"+$(this).index();
})
// removeClass
$(".innerTest>span").eq(0).removeClass('span_0');
// 删除最后一个元素与上面重复的class
$(".innerTest>span:last").removeClass(function(){
return $(this).prev().attr('class');
})
// toggleClass 如果存在(不存在)就删除(添加)一个类。
// 点击三下添加一个类
let count = 1;
$('.innerTest>span').eq(5).on('click',function(){
$(this).toggleClass("highlight",count ++ % 3==0)
})
// 根据父元素添加类
$('.innerTest>span').eq(5).toggleClass(function(){
if($(this).parent().is(".innerTest")){
return "span_6"
}
})
// html和text
$(".innerTest>p").html(function(n){
$(this).text(n);
// 下面两者等价
$(this).each(function(i){
console.log($(this)[i].innerHTML)
});
console.log($(this).text())
})
// val 元素必须要有value
$('.innerTest>input').eq(0).val(function(){
return $(this).val() + "...";
})
})
/*css相关*/
$(function(){
// css
$(".innerTest>span").eq(0).css({'font-size':'24px','color':'red'})
// 点击时自动变大,用到了定时器的this指向,采用闭包解决
$('.innerTest>span').eq(1).on('click',function(){
let count = 1.2;
var _this = $(this);
setInterval(function(){
count++;
_this.css({
'font-size':parseFloat(15)*count +'px'
})
},500)
});
// offset 获取匹配元素在当前视口的相对偏移。
let offset_1 = $('.innerTest>span').eq(0).offset();
console.log(offset_1.left);
console.log(offset_1.top);
// position 获取匹配元素相对父元素的偏移。
let offset_2 = $('.innerTest>span').eq(0).position();
console.log(offset_2.left);
console.log(offset_2.top);
// scrollTop获取匹配元素相对滚动条顶部的偏移。
console.log($('.innerTest>span').eq(0).scrollTop());
// scrollLeft获取匹配元素相对滚动条左侧的偏移。
console.log($('.innerTest>span').eq(0).scrollLeft());
// height.width
console.log($('.innerTest>span').eq(0).height());
console.log($('.innerTest>span').eq(0).width());
// innerHeight、innerWidth获取第一个匹配元素内部区域高度(包括补白、不包括边框)。
console.log($('.innerTest>span').eq(0).innerHeight());
console.log($('.innerTest>span').eq(0).innerWidth());
// outerHeight、outerWidth获取第一个匹配元素外部高度(默认包括补白和边框)。
console.log($('.innerTest>span').eq(0).outerHeight());
console.log($('.innerTest>span').eq(0).outerWidth());
})
/*选择器相关(就不写基本的或者简单的选择器了)*/
$(function(){
// 空格:在给定的祖先元素下匹配所有的后代元素
// >:在给定的父元素下匹配所有的子元素
// +:一个有效选择器并且紧接着第一个选择器
// ~ : 匹配元素之后的所有兄弟元素
// :first :获取第一个元素
// :last :获取最后一个元素
// :not(selector) :反向选择器
// :even :匹配所有索引值为偶数的元素,从 0 开始计数
// :odd :匹配所有索引值为奇数的元素,从 0 开始计数
// :eq(index) :匹配一个给定索引值的元素
// :gt(index) :匹配所有大于给定索引值的元素
// :lt(index) :匹配所有小于给定索引值的元素
// :header :匹配如 h1, h2, h3之类的标题元素
// :animated :匹配所有正在执行动画效果的元素
// :contain(text) : 匹配包含给定文本的元素
// :empty() : 匹配所有不包含子元素或者文本的空元素
// :has(selector) : 匹配含有选择器所匹配的元素的元素
console.log($('.data:has(p)').text())
// :parent() : 匹配含有子元素或者文本的元素
// :hidden 匹配所有不可见元素,或者type为hidden的元素
console.log($('.innerTest>h1:hidden'))
// :visible 匹配所有的可见元素
// [attribute] 匹配包含给定属性的元素。
console.log($('div[class]'))
// [attribute=value]
console.log($("input[type='button']"))
// [attribute!=value] 匹配所有不含有指定的属性,或者属性不等于特定值的元素。
console.log($("input[type!='button']"))
// [attribute^=value] 匹配给定的属性是以某些值开始的元素
console.log($("span[class^='span']"))
// [attribute$=value] 匹配给定的属性是以某些值结尾的元素
console.log($("span[class$='_2']"))
// [attribute*=value] 匹配给定的属性是以包含某些值的元素
console.log($("span[class*='_']"))
// [selector1][selector2][selectorN] 复合属性选择器,需要同时满足多个条件时使用。
console.log($("input[class][name='radio']"))
// :first-child 匹配第一个子元素 注意和+号的区别
console.log($('ul li:first-child'))
// ':last'只匹配一个元素,而此选择符将为每个父元素匹配一个子元素
console.log($('ul li:last-child'))
})
/*文档处理*/
// appendTo:把选择器的内容追加到appendTo里面的内容中和append:把append里面的内容追加到选择器中
// prepend(content):向每个匹配的元素内部前置内容。
$(function(){
// after(content|fn)
// before(content|fn)
console.log($("p:nth-child(1)").after("<b>hello</b>"))
console.log($("p:nth-child(1)").before("<b>hello</b>"))
// insertAfter(content) 前者插到后者后面
$(".123").insertAfter(".456");
// insertBefore(content) 后者插到前者前面
$(".101112").insertBefore(".789");
// wrap(html|ele|fn) 把所有匹配的元素用其他元素的结构化标记包裹起来。
$("b:nth-child(1)").wrap("<div class='pchild'></div>")
// replaceWith(content|fn)
$(".replaceP").replaceWith("<b>replaceP</b>")
// empty() 删除匹配的元素集合中所有的子节点。
$(".emptyAll").empty()
// remove([expr]) 从DOM中删除所有匹配的元素
$(".remove").remove();
// filter
$(".filter").filter(function(idx){
console.log($(this));
return $("ol",this).length==0;
})
// is(expr|obj|ele|fn)
console.log($(".innerTest2").is("div"));
// find(expr|obj|ele|fn)
console.log($(".innerTest2").find("li"))
// add() 返回一个数组,包含添加过的元素
console.log($(".innerTest2").add("<p>---</p>"));
})
/* 动画 */
$(function(){
// show
$(".innerTest2 li").eq(0).show("slow");
// hide
$(".innerTest2 li").eq(1).hide("slow");
$(".innerTest2 li").eq(2).slideDown("slow");
$(".innerTest2 li").eq(2).fadeOut("slow");
$(".innerTest2 li").eq(2).fadeIn("slow");
})
</script>
<body>
<div class="test" style="width:500px;heigth:500px;border:solid 1px black"> <h1>测试区</h1>
<p>div>p</p>
<input type="text">
<br>
<span></span>
<span></span>
<ul></ul>
<ul class="ul">
<li>-</li>
<li>+</li>
</ul>
<div class="innerTest">
<h1 style="display:none">h1</h1>
<a href=""></a>
<span id="foo" class="span1" style="border:solid 1px black">1</span>
<span id="bar">2</span>
<span>3</span>
<span class="span4">4</span>
<span class="span4">5</span>
<span>6</span>
<input type="checkbox" value="checkbox1">一
<input type="radio" name="radio" class="radio">二
<input type="checkbox">三
<input type="checkbox">四
<p></p>
<p></p>
<p></p>
</div>
<p class="filter">
<ol>
<li>hello</li>
</ol>
</p>
<div class="innerTest2" >
<li style="display:none">1</li>
<li>2</li>
<li>3</li>
</div>
<p class="replaceP">replaceP</p>
<p class="emptyAll">empty <b>123</b</p>
<p class="remove">empty <b>123</b</p>
<p class="123">123</p><div class="pdiv">456</div>
<p class="123">789</p><div class="101112">101112</div>
<div class="data"><p>有p</p></div>
<input type="button" id="show" value="show">
<div class="queue">queuequeuequeue</div>
</div>
<form action="">
<input type="radio" value="input:radio">
</form>
</body>
</html>

  zepto

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<script src="http://apps.bdimg.com/libs/zepto/1.1.4/zepto.js"></script>
<script type="text/javascript">
$(function(){
// 1、驼峰转换
console.log($.camelCase("hello-world"))
// 2、检查父节点是否包含给定的dom节点,如果两者相同,则返回 false。
// $.contains = function (parent, node) {
// return parent !== node && parent.contains(node)
// }
// true
console.log($.contains($(".parent")[0],$(".child")[0]))
// false
console.log($.contains($("body")[0],$("body")[0]))
// false
console.log($.contains($(".parent")[0],$(".parent")[0]))
// 3、each
$.each(['a','b','c'],function(index,item){
// 索引
console.log(index);
// 内容
console.log(item);
})
var obj = {name:"zepto","size":"micro"};
$.each(obj,function(key,value){
console.log(key);
console.log(value);
})
// 4、$.extend
var target = {"1":"2"}
var source = {"name":"zepto"}
$.extend(target,source);
console.log(target)
// 5、$.fn
$.fn.alert1 = function(){
alert(1);
}
$(".parent").alert1();
// 6、$.grep
console.log($.grep([1,2,3],function(item){
return item >1
}))
// 7、$.inArray 搜索数组中指定值并返回它的索引(如果没有找到则返回-1)。
console.log($.inArray("abc",["abc","123"]))
console.log($.inArray("abc",["123"]))
// 8、$.isArray 如果object是array,则返回ture。
// 9、$.isFunction 如果object是function,则返回ture.
// 10、$.isPlainObject 测试对象是否是纯粹的对象(通过 "{}" 或者 "new Object" 创建的),如果是,则返回true。
console.log($.isPlainObject(window)); //false
console.log($.isPlainObject({})); //true
// 11、$.isWindow 确定参数是否为一个窗口(window对象),如果是则返回true。 这在处理iframe时非常有用,因为每个iframe都有它们自己的window对象
// 12、$.map
console.log($.map([-2,1,2,3],function(item,index){
if(item>1){return item*item}
}))
console.log($.map({1:1,2:2,3:3},function(item,index){
if(item>1){return item*item}
}))
// 12、$.parseJSON 接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript 对象。
// 13、$.trim 删除字符串开始和末尾的空白符。
// 14、$.type 获取JavaScript 对象的类型。
// 15、$.add 添加元素到匹配的元素集合
console.log($("ul").add("span")); // [ul, span, selector: Array(2)]
// 16、addClass 为每个匹配的元素添加指定的class类名
// 17、after 在每个匹配的元素后插入内容。
// 18、append 在每个匹配的元素末尾插入内容。
// 19、appendTo 将匹配的元素插入到目标元素的末尾(里面的后面)。
// 20、before 在匹配每个元素的前面(外面)插入内容。
// 21、children 获得每个匹配元素集合元素的直接子元素,如果selector存在,只返回符合css选择器的元素。
// 22、$('ol').children('*:nth-child(2n)')
// 23、clone 通过深度克隆来复制集合中的所有元素。
// 24、concat
console.log($("li").eq(0).concat([$("li").eq(1)]));
// 25、data 读取或写入dom的 data-* 属性。
console.log($("li").eq(0).data("he"));
// 26、each
$("form input").each(function(index){
console.log(this,index);
})
// 27、empty 从Zepto对象集合中移除所有的dom子节点。
// 28、filter
console.log($("form input").filter(function(index){
return index %2==0;
}))
// 29、find
console.log($("form").find('input,select'));
// 30、first 获取当前Zepto对象集合中的第一个元素。
console.log($("form").first()); // 返回form
// 31、forEach
$("form input").forEach(function(item,index,array){
console.log(item,index,array)
})
// 32、get
console.log($("form input").get(0));
// 33、has
console.log($("form").has('input'))
// 34、hasClass 是否有元素含有指定的class
// 35、height
console.log($("form").height());
// 36、hide 设置display 为 none 隐藏元素
// 37、index
console.log($("form").index());
// 38、insertAfter
// 39、insertBefore
// 40、is() 判断当前Zepto元素集合中的第一个元素是否符css选择器。
// 41、last() 获取Zepto集合对象中最后一个元素。
console.log($("form").last());
// 42、pluck
console.log($("form >*").pluck('nodeName'))
// 43、position 相对于第一个定位过的祖先元素
console.log($("form").position())
// 44、prop 它在读取属性值的情况下优先于 attr 多用于checked和selected 用户交互改变的属性
$("form input").eq(3).on("click",function(){
console.log(1);
console.log($(this).attr("checked"))
console.log($(this).prop("checked"))
})
// 45、scrollTop 获取页面上的滚动元素或者整个窗口已经滚动的像素值。
console.log($("form").scrollTop());
// 46、toggle 显示或隐藏匹配元素。 如果 setting为true,相当于show 法。
$("form input").toggle($("form input").eq(4).val()=="he"); })
</script>
<body>
<div class="parent">
<div class="child"></div>
</div>
<ul>
<li data-he="123">1</li>
<li>2</li>
<li>3</li>
</ul>
<span>hello</span>
<form action="">
<input type="text" value="1">
<input type="text" value="2">
<input type="text" value="3">
<input type="checkbox" value="checkbox">
<select name="" id=""></select>
<input type="text" value="he" style="display:none">
</form> </body>
</html>

复习 | 重温jQuery和Zepto的API的更多相关文章

  1. 手机开发类型jquery的框架Zepto(API)

    Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api. 如果你会用jquery,那么你也会用zepto. http://www.html-5.cn/M ...

  2. jQuery与Zepto的异同

    一,同: Zepto最初是为移动端开发的库,是jQuery的轻量级替代品,因为它的API和jQuery相似,而文件更小.Zepto最大的优势是它的文件大小,只有8k多,是目前功能完备的库中最小的一个, ...

  3. Zepto中文API

    原文地址:http://zeptojs.com/ 译文地址:http://www.html-5.cn/Manual/Zepto/ Zepto是一个轻量级的针对现代高级浏览器的JavaScript库,  ...

  4. jQuery与Zepto

    jQuery和Zepto是我比较常用的插件.其实用法差不太多,可以说Zepto是jQuery的轻量级替代品,但是不要认为Zepto就没有jQuery好用,因为Zepto有jQuery没有的功能,就是移 ...

  5. zepto jquery和zepto的区别?

    jQuery 由于强大的生命力基本上是一个事实标准,所以大部分工具 lib 在 DOM 操作.动画等功能上或多或少都会是 jQuery-like 的. Zepto 的 API 就是完全兼容 jQuer ...

  6. jquery和zepto的异同

    相同点 相同点: zepto: 是jquery 的 阉割版 是为移动端开发的库 jQuery的轻量级替代品.文件大小比较小 只有8k左右 ,是目前功能库中最小的一个,尽管不大,zepto 所提供的工具 ...

  7. JQuery plugin ---- simplePagination.js API

    CSS Themes "light-theme" "dark-theme" "compact-theme" How To Use Step ...

  8. jquery和zepto的扩展方法extend

    jquery和zepto的扩展方法extend 总结下jQuery(3.1.1)和zepto(1.1.6)到底是如何来开放接口,使之可以进行扩展,两者都会有类型判断,本文使用简单的类型判断,暂不考虑兼 ...

  9. 一周一话题之四(JavaScript、Dom、jQuery全面复习总结<jQuery篇>)

    -->目录导航 一. 初探Jquery 1. 介绍 2. 基础 二. Jquery操作 1. jQuery页面加载 2. 选择器 3. 操作Dom 三. Jquery进阶 1. 隐式迭代与链式编 ...

随机推荐

  1. XXE漏洞学习笔记

    XXE 参考文章 名称 地址 一篇文章带你深入理解漏洞之 XXE 漏洞 https://xz.aliyun.com/t/3357 Web Hacking 101 https://wizardforce ...

  2. 【小白学AI】随机森林 全解 (从bagging到variance)

    文章转自公众号[机器学习炼丹术],关注回复"炼丹"即可获得海量免费学习资料哦! 目录 1 随机森林 2 bagging 3 神秘的63.2% 4 随机森林 vs bagging 5 ...

  3. linux 安装sftp

    1.定义sftp的数据目录 mkdir -p /data/sftp 2.将目录归到root用户,否则无法chroot chown root. -R /data/sftp/或者chown root:ro ...

  4. Linux三剑客老三---grep

    1.Linux三剑客老三 过滤需要的内容,例子:grep -v oldboy hello.txt grep一般常用参数: -a:在二进制文件中,以文本文件的方式搜索数据. -c:计算找到"搜 ...

  5. [WPF][Rubyer] 写一个自己的 UI 库 (二) - Icon

    前言 制作 WPF 的图标包,主要介绍从 iconfont 下载的图标包导入到 WPF 使用: 1. 添加文件 Ruyber 下添加 自定义控件(WPF) Icon.cs.类 IconType.cs. ...

  6. 介绍 golang json数据的处理

    原文链接:https://blog.csdn.net/weixin_43223076/article/details/83550229 demo1: package main import ( &qu ...

  7. 第7篇scrum冲刺(5.27)

    一.站立会议 1.照片 2.工作安排 成员 昨天已完成的工作 今天的工作安排 困难 陈芝敏  学习云开发,云函数调用以及数据的前后端传递  今天实现云词库搭建,随机获取并显示,对云开发有更深的认识   ...

  8. IDEA实用插件推荐及使用方法详解

    当前使用的IDEA版本是2020.1.随着IDEA版本的升级,有些插件不再支持,而有些插件变成了收费插件,这些插件将不再推荐.以下列举的,都是亲测可以在2020.1版本的IDEA中使用的插件. Tra ...

  9. 面经手册 · 第8篇《LinkedList插入速度比ArrayList快?你确定吗?》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你以为考你个数据结构是要造火箭? 汽车75马力就够奔跑了,那你怎么还想要2.0涡轮+ ...

  10. 文件属性及find命令总结

    第1章   文件属性 1.1   文件的属性 1.1.1    查看文件的详细属性       PS:ls查看的文件或目录默认的是按照名字的第一个字母进行正序排序       ls 参数选项: -t ...