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. IntelliJ Idea如何解决Could not autowire. No beans of 'xxxx' type found的错误提示

    问题描述 在idea中进行开发时,经常会遇见Could not autowire. No beans of 'xxxx' type found的错误提示,这样的是不影响程序编译和运行的,但是看起来会很 ...

  2. wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败

    继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...

  3. java基础-02:编译型和解释型

    Java程序运行机制: Java语言的编译-->解释-->运行过程 1.编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的 ...

  4. JavaScript学习系列博客_12_JavaScript中的break、continue关键字

    break关键字 -break关键字可以用来退出switch或循环语句 -不能在if语句中使用break和continue,但不是说if语句里面不能写break关键字,break关键字一定要包含在sw ...

  5. JavaScript学习系列博客_6_JavaScript中的算数运算符

    运算符(操作符) 在JS中 +.-.*./.%这些都是算数运算符,typeof也是一个运算符,它的操作结果就是得到一个描述变量数据类型的字符串. + 运算符 1.两个值在都没有string类型的值的情 ...

  6. Nginx进程模型

    多进程模式 在开始介绍Nginx的进程模型之前先说明下:Nginx也支持Single Master单进程模式,但是这个模式效率较低,一般只用在开发环境.所以不是本文介绍的重点. Nginx默认采用多进 ...

  7. netbox demo

    参考链接:https://pypi.org/project/python-netbox/ # python 参考链接 https://ttl255.com/pynetbox-netbox-python ...

  8. 强化学习中的经验回放(The Experience Replay in Reinforcement Learning)

    一.Play it again: reactivation of waking experience and memory(Trends in Neurosciences 2010) SWR发放模式不 ...

  9. VSCode 快速生成.vue基本模板、发送http请求模板

    安装vscode 官网:https://code.visualstudio.com/ 安装 Vetur 插件,识别 vue 文件 插件库中搜索Vetur,点击安装,安装完成之后点击重新加载 新建代码片 ...

  10. 赫然:Windows Live Writer 批量博客更新软件使用教程

    http://www.wocaoseo.com/thread-144-1-1.html 推广人员需要使用多个博客,一个一个登陆更新是很麻烦的事情,网上的桌面批量更新博客软件也不少,今天在此推荐大家使用 ...