JQuery和Zepto的差异(部分)

1.width()/height()

  • Zepto.js: 由盒模型(box-sizing)决定

jQuery: 忽略盒模型,始终返回内容区域的宽/高(不包含 paddingborder

jQuery 官方的说明

Note that .width() will always return the content width, regardless of the value of the CSS box-sizingproperty. As of jQuery 1.8, this may require retrieving the CSS width plus box-sizing property and then subtracting any potential border and padding on each element when the element has box-sizing: border-box. To avoid this penalty, use .css("width") rather than .width().

解决方式就是在 jQuery 中使用 .css(‘width‘),而不是 .width()

这点上 jQuery 的处理方式是值得商榷的,比如下面的例子,$(‘.box‘).css(‘height‘) 仍然返回 20px,这不是扯蛋么:

<style>
  .box {
    box-sizing: border-box;
    padding: 10px;
    height: 0;
  }
</style>

<div class="box"></div>
边框三角形宽高的获取

假设用下面的 HTML 和 CSS 画了一个小三角形:

<div class="caret"></div>
.caret {
  width: 0;
  height: 0;
  border-width: 0 20px 20px;
  border-color: transparent transparent blue;
  border-style: none dotted solid;
}
  • jQuery 使用 .width() 和 .css(‘width‘) 都返回 0,高度也一样;
  • Zepto 使用 .width() 返回 40,使用 .css(‘width‘) 返回 0px

所以,这种场景,jQuery 使用 .outerWidth()/.outerHeight();Zepto 使用 .width()/.height()

2.offset()

    • Zepto.js: 返回 topleftwidthheight
    • jQuery: 返回 widthheight

$(htmlString, attributes)

DOM 操作区别
$(function() {
  var $list = $(‘<ul><li>jQuery 插入</li></ul>‘, {
    id: ‘insert-by-jquery‘
  });
  $list.appendTo($(‘body‘));
});

jQuery 操作 ul 上的 id 不会被添加;Zepto 可以在 ul 上添加 id

事件触发区别
$script = $(‘<script />‘, {
  src: ‘http://cdn.amazeui.org/amazeui/1.0.1/js/amazeui.min.js‘,
  id: ‘ui-jquery‘
});

$script.appendTo($(‘body‘));

$script.on(‘load‘, function() {
  console.log(‘jQ script loaded‘);
});

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

原文地址:https://www.cnblogs.com/vivaxiaonan/p/9131934.html

时间: 2024-10-20 16:49:04

JQuery和Zepto的差异(部分)的相关文章

对比jQuery和Zepto

JavaScript库——jQuery和Zepto jQuery是在Web上应用很广泛的JavaScript库,它提供了大量的工具和API函数,使用它的人相当普遍,使用的门槛也比较低.它的API语义对初学者很宽容,出现各种失误也不会抛出JavaScript错误.大多数jQuery方法都是可链接的,也就是说这些方法都会返回jQuery对象,所以可以把任意多个方法链接到一个DOM引用上.正因如此,为jQuery贡献代码的人很多,导致jQuery的每个功能都有代价,代码库的不断膨胀,文件尺寸成为最大负

jQuery,zepto手机端用on将子元素事件委托给body或document无效

jQuery,zepto手机端用on将子元素事件委托给body或document无效 在移动端,绑定在普通的div元素上是可以的,但是绑定在body上无效,document也是无效. <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <meta name="viewport" content="width=d

基于jQuery或Zepto实现实时监控用户浏览信息

对于一些大型公司,想要有一些监控用户行为的分析,怎么办? 比如一个场景,A公司想要监控用户浏览当前屏幕有哪些数据怎么办? 那么就用到本文所提的监控解决方案了: 1.首先要监控用户到底在该屏停留了多久: 2.基于1确定用户是停留在了本页面而没有滑动手机屏幕: 3.在用户未达到条件后的callback机制. 基于以上的问题,我们可以想到时间分片 1 /* This is a expose advertisements component. 2 * Base on some class librari

jquery和zepto的区别

1.zepto对象不能自定义事件 例如执行: $({}).bind('cust', function(){});     结果:  TypeError: Object has no method 'addEventListener'解决办法是创建一个脱离文档流的节点作为事件对象: 例如: $('').bind('cust', function(){}); 2.Zepto 的选择器表达式: [name=value]  中value 必须用 双引号 "  or 单引号 ' 括起来 例如执行:$('[

jquery与zepto同时使用

一般情况下,我们在选择这类库的时候都只用一个,要么JQ,要么ZEPTO 但是遇到某些特殊情况时,需要引入某个插件,可能会出现两个共用,这时需要对这两个库进行一些处理 方法一: 声明下 var jq=$.noConflict(); 这样就可以用jq代替jquery的$ 方法二: window.$$ = window.Zepto = Zepto; 这样就可以用$$替代zepto

jQuery和Zepto冲突问题【解决】

特殊操作下,项目中同时引入这两个文件时,往往会有些冲突,应该加一句代码避免冲突 <script src="~/js/jquery-2.1.4.js"></script> <script>jQuery.noConflict()</script> <script src="~/js/zepto.min.js"></script> 1 2 3 1 2 3 加这句 <script>jQuer

复习 | 重温jQuery和Zepto的API

jq和zepto很相似有许多共同的api,zepto也出了很多与jq不一样的api,总的来说,两者更相似,但是zepto更轻量一点,正好公司也在用,复习这两个没错 jq中的zepto的事件和ajax我没有整理,因为之前有专门的文章去详细的写了ajax和事件绑定的区别 再学ajax--第一天 再学ajax--第二天 | 基于php+mysql+ajax的表单注册.登录.注销 JS进阶 | 分析JS中的异步操作 面试 | 蚂蚁金服面试经历 也讲到了js中的绑定事件的区别bind.on.delegat

jQuery或zepto源码有哪些写的好的地方

jquery源码封装在一个匿名函数的自执行环境中,有助于防止变量的全局污染,然后通过传入window对象参数,可以使window对象作为局部变量使用,好处是当jquery中访问window对象的时候,就不用将作用域链退回到顶层作用域了,从而可以更快的访问window对象.同样,传入undefined参数,可以缩短查找undefined时的作用域链. (function( window, undefined ) { //用一个函数域包起来,就是所谓的沙箱 //在这里边var定义的变量,属于这个函数

迷你版jQuery——zepto核心源码分析

前言 zepto号称迷你版jQuery,并且成为移动端dom操作库的首选 事实上zepto很多时候只是借用了jQuery的名气,保持了与其基本一致的API,其内部实现早已面目全非! 艾伦分析了jQuery,小钗暂时没有那个本事分析jQuery,这里就恬不知耻说说自己对zepto的源码理解,希望对各位有用 首先zepto的出现其实还是很讨巧的,他看见了巨人jQuery在移动浪潮来临时的转身慢.牵挂多的问题 马上搞出了一套轻量级类jQuery框架代码,核心代码1000行不到,快速占领了移动端的市场,