Zepto与jQuery异同

(1)同

Zepto是jQuery的轻量级替代品,它的API与jquery基本一致,它的体积非常小,jQuery中常用的API和方法,Zepto基本都有,所以适用于移动端开发。相比于jQuery Mobile,Zepto更合适。

(2)异

(2.1)Zepto不支持IE浏览器

Zepto针对移动端程序开发,有一些基本的触摸事件,例如tap事件、swipe事件;
Zepto不支持IE浏览器,目的是为了减小Zepto的体积;
因为Zepto使用jQuery句法,所以它在文档中建议把jQuery作为IE上的后备库。那样程序仍能在IE中,而其他浏览器则能享受到Zepto在文件大小上的优势,然而它们两个的API不是完全兼容的,所以使用这种方法时一定要小心,并要做充分的测试。

(2.2)DOM操作的区别

添加id时,jQuery不会生效,Zepto会生效

(function($){
    //DOM操作,jquery添加id不会生效
    $(function(){
       var inSet = $('<p>Jquery</p>',
           {id : 'insetId'});
       inSet.appendTo($('body'));
    });
})(window.jQuery);

Zepto(function($){
    //DOM操作,zepto添加id生效
    $(function(){
        var inSet = $('<p>Zepto</p>',{id : 'insetId'});
        inSet.appendTo($('body'));
    });
});

(2.3)事件触发的区别

使用 jQuery 时 load 事件的处理函数不会执行;使用 Zepto 时 load 事件的处理函数会执行

(function($){
    //事件触发,load不会执行
    $(function(){
        var carryOutLoad = $('<script/>',
            {
                src : '../jquery-3.2.0.min.js',
                id : 'insetjQueryId'
            });
        carryOutLoad.appendTo($('body'));

        carryOutLoad.on('load', function() {
            console.log('jQ script loaded');    //未打印
        });
    });

})(window.jQuery);

Zepto(function($){
    //事件触发,load会执行
    $(function(){
        var carryOutLoad = $('<script/>',
            {
                src : '../zepto.min.js',
                id : 'insetZeptoId'
            });
        carryOutLoad.appendTo($('body'));
        carryOutLoad.on('load', function() {
            console.log('zepto loaded');
        });
    });
});

(2.4)事件委托的区别

(function($){
    $(document).on('click','.a',function(){
        alert('a事件');
        $(this).removeClass('a').addClass('b');
    });
    $(document).on('click','.b',function(){
        alert('b事件');
    });
    //弹出a事件,未弹出b事件
})(window.jQuery);

Zepto(function($){
    $(document).on('click','.c',function(){
        alert('c事件');
        $(this).removeClass('c').addClass('d');
    });
    $(document).on('click','.d',function(){
        alert('d事件');
    });
    //弹出c事件,接着弹出d事件
})

在Zepto中,当a被点击后,依次弹出了内容为”a事件“和”b事件“,说明虽然事件委托在.a上可是却也触发了.b上的委托。但是在 jQuery 中只会触发.a上面的委托弹出”a事件“。Zepto中,document上所有的click委托事件都依次放入到一个队列中,点击的时候先看当前元素是不是.a,符合则执行,然后查看是不是.b,符合则执行。而在jQuery中,document上委托了2个click事件,点击后通过选择符进行匹配,执行相应元素的委托事件。

(2.5)width()和height()的区别

Zepto由盒模型(box-sizing)决定,用.css('width')返回带单位的width的结果,用.width()返回赋值的width,包含padding、border;
jQuery会忽略盒模型,始终返回内容区域的宽/高(不包含padding、border)。
设置两个div:

<div id="oneBox" style="width: 200px;height: 200px;border:2px solid red;padding:10px;background:darkseagreen;"></div>
<div id="twoBox" style="width: 200px;height: 200px;border:2px solid green;padding:10px;background:palevioletred;"></div>

分别使用jquery与zepto来检验一下:

(function($){
    var oneBox = $('#oneBox');
    console.log(oneBox.width());    //200
})(window.jQuery);

Zepto(function($){
    var twoBox = $('#twoBox');
    console.log(twoBox.width());    //224,包含了width,border,padding,不包含margin
    console.log(twoBox.css('width'));   //200px,带单位的宽度值,不包含border,padding,margin
});

(2.6)offset()的区别

Zepto返回{top,left,width,height};
jQuery返回{top,left}
设置一个div:

<div class="getOffset" style="position:relative;top:40px;left:50px;"></div>
(function($){
    var getOffset = $('.getOffset');
    console.log(getOffset.offset());    //top: 568, left: 58
})(window.jQuery);

Zepto(function($){
    var getOffset = $('.getOffset');
    console.log(getOffset.offset());    //left: 58, top: 568, width: 1887, height: 0
});

原文链接:http://www.cnblogs.com/colima/p/5289386.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容