
DOM操作的区别:
DOM 操作在添加id时,jQuery不会生效,而Zepto会生效。
jQuery操作的 ul 上的 id 不会被添加。
(function($) {
$(function() {
var $list = $('<ul><li>jQuery 插入</li></ul>', {
id: 'insert-by-jquery'
});
$list.appendTo($('body'));
});})(window.jQuery);Zepto 可以在 ul 上添加 id。
Zepto(function($) {
var $list = $('<ul><li>Zepto 插入</li></ul>', {
id: 'insert-by-zepto'
});
$list.appendTo($('body'));
});事件触发的区别:
使用jquery时load事件的处理函数不会执行;
(function($) {
$(function() {
$script = $('<script />', {
src: 'http://cdn.amazeui.org/amazeui/1.0.1/js/amazeui.js',
id: 'ui-jquery'
});
$script.appendTo($('body'));
$script.on('load', function() {
console.log('jQ script loaded');
});
});})(window.jQuery);使用zepto时load事件的处理函数会执行
Zepto(function($) {
$script = $('<script />', {
src: 'http://cdn.amazeui.org/amazeui/1.0.1/js/amazeui.js',
id: 'ui-zepto'
});
$script.appendTo($('body'));
$script.on('load', function() {
console.log('zepto script loaded');
});});事件委托的区别:
zepto中,选择器上所有的委托事件都依次放入到一个队列中,而在jquery中则委托成独立的多个事件
API 方面的区别
width() 和 height() 的区别
在Zepto和jQuery中使用width() 或 height()获取的值是不一样的:
Zepto 由盒模型(box-sizing)决定;
jQuery 会忽略盒模型,始终返回内容区域的宽/高(不包含padding、border)。
jQuery官方的说明:
Note that .width() will always return the content width, regardless of the value of the CSS box-sizing property. 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() .
解决方式就是使用 .css('width') 而不是 .width() 。下面我们举个叫做《边框三角形宽高的获取》的栗子来说明这个问题。
首先用下面的 HTML 和 CSS 画了一个小三角形吧。
// html
<div class="caret"></div>
// css
.caret {
width: 0;
height: 0;
border-width: 0 20px 20px;
border-color: transparent transparent blue;
border-style: none dotted solid;
}jQuery 使用 .width() 和 .css('width') 都返回 ,高度也一样;
Zepto 使用 .width() 返回 ,使用 .css('width') 返回 0px 。
所以,这种场景,jQuery 使用 .outerWidth() / .outerHeight() ;Zepto 使用 .width() / .height()。
offset()的区别:
Zepto offset()处理角度与jQuery不同。在Zepto中,offset()会获取并返回 top、left、width、height四个值;在jquery中,offset()就只获取并返回width、height两个值。
获取隐藏元素width和height的区别
如果是隐藏元素,Zepto无法获取其宽高;但jquery可以获取隐藏元素的宽高。
extend() 的区别
zepto中没有为原型定义extend方法,而jquery有。
jQuery 在原型上拓展方法使用的方式是:
// For example
// Extend a function named 'sayHello' to the protorype of jQuery
(function($) {
$.fn.extend({
sayHello: function() {
$(this).html('Hello !');
}
});
})(window.jQuery);Zepto 中并没有为原型定义extend方法,所以如果要是要在 Zepto 的原型上拓展方法可以使用的方式是:
// For example
// Extend a function named 'sayHello' to the protorype of Zepto
Zepto(function($) {
sayHello: function() {
$(this).html('Hello !');
}
});each方法的区别
zepto的each方法只能遍历数组,不能遍历JSON对象。
clone()的区别
Zepto clone()不支持传递参数来克隆事件处理程序,但jQuery支持。
更多jQuery相关技术文章,请访问 jQuery答疑 栏目进行学习!!
以上就是jQuery和Zepto的差异是什么?的详细内容,更多请关注易知道|edz.cc其它相关文章!













