Zepto.js

Zepto是一个轻量级的针对现代高级浏览器的JavaScript库 它与jquery有着类似的api 如果你会用jquery那么你也会用zepto

Zepto的设计目的是提供 jQuery 的类似的API但并不是100%覆盖 jQuery Zepto设计的目的是有一个5-10k的通用库下载并快速执行有一个熟悉通用的API所以你能把你主要的精力放到应用开发上

Zepto 是一款开源软件它可以被开发者和商业发布 MIT license.

Download Zepto

默认构建包含以下模块
Core, Ajax, Event, Form, IE.

Zepto v1.0 默认捆绑了Effects, iOS3, 和 Detect 模块
请参阅下面的 可选模块(optional modules)

Or grab the latest version on GitHub.

用一个script标签引入Zepto到你的页面的底部

...
<script src=zepto.min.js></script>
</body>
</html>

如果$变量尚未定义Zepto只设置全局变量$指向它本身 没有Zepto.noConflict方法

如果你需要支持旧的浏览器如Internet Explorer 9或以下你可以退回到jQuery的1.x

浏览器支持

初级 (100% 支持)

次要目标完全或大部分支持

需要注意的是Zepto的一些可选功能是专门针对移动端浏览器的因为它的最初目标在移动端提供一个精简的类似jquery的js库

在浏览器上(SafariChrome和Firefox)上开发页面应用或者构建基于html的web-view本地应用你如PhoneGap使用Zepto是一个不错的选择

总之Zepto希望在所有的现代浏览器中作为一种基础环境来使用Zepto不支持旧版本的Internet Explorer浏览器(<10)

手动建立Zepto

zepto.jszepto.min.js提供以上使用方式 然而为了更好的程序效果和自由性可以在使用Zepto源码构建Zepto.js和zepto.min.js的时候选择模块并作测试 使用UglifyJS根据你的需要来生成(当服务端开启gzipped后最精简的代码)代码

关于如何建立Zepto的the README包含运行测试和补丁

Zepto 模块

module default description
zepto 核心模块包含许多方法
event 通过on()& off()处理事件
ajax XMLHttpRequest 和 JSONP 实用功能
form 序列化 & 提交web表单
ie 增加支持桌面的Internet Explorer 10+和Windows Phone 8
detect 提供 $.os$.browser消息
fx The animate()方法
fx_methods 以动画形式的 show, hide, toggle, 和 fade*()方法.
assets 实验性支持从DOM中移除image元素后清理iOS的内存
data 一个全面的 data()方法, 能够在内存中存储任意对象
deferred 提供 $.Deferredpromises API. 依赖"callbacks" 模块.
当包含这个模块时候, $.ajax() 支持promise接口链式的回调
callbacks 为"deferred"模块提供 $.Callbacks
selector 实验性的支持 jQuery CSS 表达式 实用功能比如 $('div:first')el.is(':visible')
touch 在触摸设备上触发tap– 和 swipe– 相关事件这适用于所有的`touch`(iOS, Android)和`pointer`事件(Windows Phone)
gesture 在触摸设备上触发 pinch 手势事件
stack 提供 andSelf& end()链式调用方法
ios3 String.prototype.trim 和 Array.prototype.reduce 方法 (如果他们不存在) 以兼容 iOS 3.x.

创建插件

可以通过添加方法作为 $.fn 的属性来写插件

;(function($){
  $.extend($.fn, {
    foo: function(){
      // `this` refers to the current Zepto collection.
      // When possible, return the Zepto collection to allow chaining.
      return this.html('bar')
    }
  })
})(Zepto)

为了更好开始开发插件先看下source of Zepto's core module并确认读过coding style guidelines


核心方法

$()

$(selector, [context])  ⇒ collection
$(<Zepto collection>)  ⇒ same collection
$(<DOM nodes>)  ⇒ collection
$(htmlString)  ⇒ collection
$(htmlString, attributes)  ⇒ collection v1.0+
Zepto(function($){ ... }) 

通过执行css选择器包装dom节点或者通过一个html字符串创建多个元素 来创建一个Zepto集合对象

Zepto集合是一个类似数组的对象它具有链式方法来操作它指向的DOM节点除了$( Zepto)对象上的直接方法外(如$.extend)文档对象中的所有方法都是集合方法

如果选择器中存在content参数(css选择器dom或者Zepto集合对象)那么只在所给的节点背景下进行css选择器这个功能和使用$(context).find(selector)是一样的

当给定一个html字符串片段来创建一个dom节点时也可以通过给定一组属性映射来创建节点最快的创建但元素使用<div><div/>形式

当一个函数附加在 DOMContentLoaded 事件的处理流程中如果页面已经加载完毕这个方法将会立即被执行

$('div')  //=> 所有页面中得div元素
$('#foo') //=> ID 为 "foo" 的元素

// 创建元素:
$("<p>Hello</p>") //=> 新的p元素
// 创建带有属性的元素:
$("<p />", { text:"Hello", id:"greeting", css:{color:'darkblue'} })
//=> <p id=greeting style="color:darkblue">Hello</p>

// 当页面ready的时候执行回调:
Zepto(function($){
  alert('Ready to Zepto!')
})

不支持jQuery CSS 扩展 然而可选的selector模块有限提供了支持几个最常用的伪选择器而且可以被丢弃与现有的代码或插件的兼容执行

如果$变量尚未定义Zepto只设置了全局变量$指向它本身允许您同时使用的Zepto和有用的遗留代码例如prototype.js只要首先加载PrototypeZepto将不会覆盖Prototype的 $ 函数Zepto将始终设置全局变量Zepto指向它本身

$.camelCase v1.0+

$.camelCase(string)  ⇒ string

将一组字符串变成骆驼命名法的新字符串如果该字符已经是骆驼命名法则不变化

$.camelCase('hello-there') //=> "helloThere"
$.camelCase('helloThere')  //=> "helloThere"

$.contains v1.0+

$.contains(parent, node)  ⇒ boolean

检查父节点是否包含给定的dom节点如果两者是相同的节点则返回 false

$.each

$.each(collection, function(index, item){ ... })  ⇒ collection

遍历数组元素或以key-value值对方式遍历对象回调函数返回 false 时停止遍历

$.each(['a', 'b', 'c'], function(index, item){
  console.log('item %d is: %s', index, item)
})

var hash = { name: 'zepto.js', size: 'micro' }
$.each(hash, function(key, value){
  console.log('%s: %s', key, value)
})

$.extend

$.extend(target, [source, [source2, ...]])  ⇒ target
$.extend(true, target, [source, ...])  ⇒ target v1.0+

通过源对象扩展目标对象的属性源对象属性将覆盖目标对象属性

默认情况下为复制为浅拷贝浅复制如果第一个参数为true表示深度拷贝深度复制

var target = { one: 'patridge' },
    source = { two: 'turtle doves' }

$.extend(target, source)
//=> { one: 'patridge',
//     two: 'turtle doves' }

$.fn

Zepto.fn是一个对象它拥有Zepto对象上所有可用的方法如 addClass() attr()和其它方法在这个对象添加一个方法所有的Zepto对象上都能用到该方法

这里有一个实现 Zepto 的 empty() 方法的例子

$.fn.empty = function(){
  return this.each(function(){ this.innerHTML = '' })
}

$.grep v1.0+

$.grep(items, function(item){ ... })  ⇒ array

获取一个新数组新数组只包含回调函数中返回 ture 的数组项

$.grep([1,2,3],function(item){
    return item > 1
});//=>[2,3]
    

$.inArray v1.0+

$.inArray(element, array, [fromIndex])  ⇒ number

返回数组中指定元素的索引值愚人码头注以0为基数如果没有找到该元素则返回-1

愚人码头注[fromIndex] 参数可选表示从哪个索引值开始向后查找

$.inArray("abc",["bcd","abc","edf","aaa"]);//=>1

$.inArray("abc",["bcd","abc","edf","aaa"],1);//=>1

$.inArray("abc",["bcd","abc","edf","aaa"],2);//=>-1
         

$.isArray

$.isArray(object)  ⇒ boolean

如果object是array则返回ture

$.isFunction

$.isFunction(object)  ⇒ boolean

如果object是function则返回ture

$.isPlainObject v1.0+

$.isPlainObject(object)  ⇒ boolean

测试对象是否是“纯粹”的对象这个对象是通过 对象常量"{}" 或者 new Object 创建的如果是则返回true

$.isPlainObject({})         // => true
$.isPlainObject(new Object) // => true
$.isPlainObject(new Date)   // => false
$.isPlainObject(window)     // => false

$.isWindow v1.0+

$.isWindow(object)  ⇒ boolean

如果object参数是否为一个window对象那么返回true这在处理iframe时非常有用因为每个iframe都有它们自己的window对象使用常规方法obj === window校验这些objects的时候会失败

$.map

$.map(collection, function(item, index){ ... })  ⇒ collection

通过遍历集合中的元素返回通过迭代函数的全部结果愚人码头注一个新数组nullundefined 将被过滤掉

$.map([1,2,3,4,5],function(item,index){
        if(item>1){return item*item;}
}); 
// =>[4, 9, 16, 25]

$.map({"yao":1,"tai":2,"yang":3},function(item,index){
    if(item>1){return item*item;}
}); 
// =>[4, 9]

$.parseJSON v1.0+

$.parseJSON(string)  ⇒ object

原生JSON.parse方法的别名愚人码头注接受一个标准格式的 JSON 字符串并返回解析后的 JavaScript 对象

$.trim v1.0+

$.trim(string)  ⇒ string

删除字符串首尾的空白符类似String.prototype.trim()

$.type v1.0+

$.type(object)  ⇒ string

获取JavaScript 对象的类型可能的类型有 null undefined boolean number string function array date regexp object error

对于其它对象它只是简单报告为object如果你想知道一个对象是否是一个javascript普通对象使用 isPlainObject

add

add(selector, [context])  ⇒ self

添加元素到当前匹配的元素集合中如果给定content参数将只在content元素中进行查找否则在整个document中查找

<ul>
    <li>list item 1</li>
    <li>list item 2</li>
    <li>list item 3</li>
</ul>
<p>a paragraph</p>

<script type="text/javascript">
    $('li').add('p').css('background-color', 'red');
</script>

addClass

addClass(name)  ⇒ self
addClass(function(index, oldClassName){ ... })  ⇒ self

为每个匹配的元素添加指定的class类名多个class类名使用空格分隔

after

after(content)  ⇒ self

在每个匹配的元素后插入内容愚人码头注外部插入内容可以为html字符串dom节点或者节点组成的数组

$('form label').after('<p>A note below the label</p>')

append

append(content)  ⇒ self

在每个匹配的元素末尾插入内容愚人码头注内部插入内容可以为html字符串dom节点或者节点组成的数组

$('ul').append('<li>new list item</li>')

appendTo

appendTo(target)  ⇒ self

将匹配的元素插入到目标元素的末尾愚人码头注内部插入这个有点像 append但是插入的目标与其相反

$('<li>new list item</li>').appendTo('ul')

attr

attr(name)  ⇒ string
attr(name, value)  ⇒ self
attr(name, function(index, oldValue){ ... })  ⇒ self
attr({ name: value, name2: value2, ... })  ⇒ self

读取或设置dom的属性如果没有给定value参数则读取对象集合中第一个元素的属性值当给定了value参数则设置对象集合中所有元素的该属性的值当value参数为null那么这个属性将被移除(类似removeAttr)多个属性可以通过对象键值对的方式进行设置

要读取DOM的属性如 checkedselected, 使用 prop

var form = $('form')
form.attr('action')             //=> 读取值
form.attr('action', '/create')  //=> 设置值
form.attr('action', null)       //=> 移除属性

// 多个属性:
form.attr({
  action: '/create',
  method: 'post'
})

before

before(content)  ⇒ self

在匹配每个元素的前面插入内容愚人码头注外部插入内容可以为html字符串dom节点或者节点组成的数组

$('table').before('<p>See the following table:</p>')

children

children([selector])  ⇒ collection

获得每个匹配元素集合元素的直接子元素如果给定selector那么返回的结果中只包含符合css选择器的元素

$('ol').children('*:nth-child(2n)')
//=> every other list item from every ordered list

clone v1.0+

clone()  ⇒ collection

通过深度克隆来复制集合中的所有元素

此方法不会将数据和事件处理程序复制到新的元素这点和jquery中利用一个参数来确定是否复制数据和事件处理不相同

closest

closest(selector, [context])  ⇒ collection
closest(collection)  ⇒ collection v1.0+
closest(element)  ⇒ collection v1.0+

从元素本身开始逐级向上级元素匹配并返回最先匹配selector的元素如果给定context节点参数那么只匹配该节点的后代元素这个方法与 parents(selector)有点相像但它只返回最先匹配的祖先元素

如果参数是一个Zepto对象集合或者一个元素结果必须匹配给定的元素而不是选择器

var input = $('input[type=text]')
input.closest('form')

concat

concat(nodes, [node2, ...])  ⇒ self

添加元素到一个Zepto对象集合形成一个新数组如果参数是一个数组那么这个数组中的元素将会合并到Zepto对象集合中

这是一个Zepto提供的方法不是jquey的API 

contents v1.0+

contents()  ⇒ collection

获得每个匹配元素集合元素的子元素包括文字和注释节点愚人码头注.contents()和.children()方法类似只不过前者包括文本节点以及jQuery对象中产生的HTML元素

css

css(property)  ⇒ value
css([property1, property2, ...])  ⇒ object v1.1+
css(property, value)  ⇒ self
css({ property: value, property2: value2, ... })  ⇒ self

读取或设置DOM元素的css属性当value参数不存在的时候返回对象集合中第一个元素的css属性当value参数存在时设置对象集合中每一个元素的对应css属性

多个属性可以通过传递一个属性名组成的数组一次性获取多个属性可以利用对象键值对的方式进行设置

当value为空(空字符串nullundefined)那个css属性将会被移出当value参数为一个无单位的数字如果该css属性需要单位px将会自动添加到该属性上

var elem = $('h1')
elem.css('background-color')          // read property
elem.css('background-color', '#369')  // set property
elem.css('background-color', '')      // remove property

// set multiple properties:
elem.css({ backgroundColor: '#8EE', fontSize: 28 })

// read multiple properties:
elem.css(['backgroundColor', 'fontSize'])['fontSize']

data

data(name)  ⇒ value
data(name, value)  ⇒ self

读取或写入dom的 data-* 属性行为有点像 attr 但是属性名称前面加上 data-

当读取属性值时会有下列转换v1.0+

  • true, false, and null 被转换为相应的类型
  • 数字值转换为实际的数字类型
  • JSON值将会被解析如果它是有效的JSON
  • 其它的一切作为字符串返回

    Zepto 基本实现`data()`只能存储字符串如果你要存储任意对象请引入可选的data模块到你构建的Zepto中

each

each(function(index, item){ ... })  ⇒ self

遍历一个对象集合每个元素在迭代函数中this关键字指向当前项(作为函数的第二个参数传递)如果迭代函数返回 false遍历结束

$('form input').each(function(index){
  console.log('input %d is: %o', index, this)
})

empty

empty()  ⇒ self

清空对象集合中每个元素的DOM内容

eq

eq(index)  ⇒ collection

从当前对象集合中获取给定索引值愚人码头注以0为基数的元素

$('li').eq(0)   //=> only the first list item
$('li').eq(-1)  //=> only the last list item

filter

filter(selector)  ⇒ collection
filter(function(index){ ... })  ⇒ collection v1.0+

过滤对象集合返回对象集合中满足css选择器的项如果参数为一个函数函数返回有实际值得时候元素才会被返回在函数中 this 关键字指向当前的元素

与此相反的功能查看not.

find

find(selector)  ⇒ collection
find(collection)  ⇒ collection v1.0+
find(element)  ⇒ collection v1.0+

在当对象前集合内查找符合CSS选择器的每个元素的后代元素

如果给定Zepto对象集合或者元素过滤它们只有当它们在当前Zepto集合对象中时才回被返回

var form = $('#myform')
form.find('input, select')

first

first()  ⇒ collection

获取当前对象集合中的第一个元素

$('form').first()

forEach

forEach(function(item, index, array){ ... }, [context]) 

遍历对象集合中每个元素有点类似 each但是遍历函数的参数不一样当函数返回 false 的时候遍历不会停止

这是一个Zepto提供的方法不是jquery的API

get

get()  ⇒ array
get(index)  ⇒ DOM node

从当前对象集合中获取所有元素或单个元素当index参数不存在的时以普通数组的方式返回所有的元素当指定index时只返回该置的元素这点与eq不同该方法返回的是DOM节点不是Zepto对象集合

var elements = $('h2')
elements.get()   //=> get all headings as an array
elements.get(0)  //=> get first heading node

has v1.0+

has(selector)  ⇒ collection
has(node)  ⇒ collection

判断当前对象集合的子元素是否有符合选择器的元素或者是否包含指定的DOM节点如果有则返回新的对象集合该对象过滤掉不含有选择器匹配元素或者不含有指定DOM节点的对象

$('ol > li').has('a[href]')
//=> get only LI elements that contain links

hasClass

hasClass(name)  ⇒ boolean

检查对象集合中是否有元素含有指定的class

<ul>
    <li>list item 1</li>
    <li class="yaotaiyang">list item 2</li>
    <li>list item 3</li>
</ul>
<p>a paragraph</p>

<script type="text/javascript">
    $("li").hasClass("yaotaiyang");
  //=> true
</script>

height

height()  ⇒ number
height(value)  ⇒ self
height(function(index, oldHeight){ ... })  ⇒ self

获取对象集合中第一个元素的高度或者设置对象集合中所有元素的高度

$('#foo').height()   // => 123
$(window).height()   // => 838 (viewport height)
$(document).height() // => 22302

hide

hide()  ⇒ self

Hide elements in this collection by setting their display CSS property to none.

通过设置css的属性displaynone来将对象集合中的元素隐藏

html

html()  ⇒ string
html(content)  ⇒ self
html(function(index, oldHtml){ ... })  ⇒ self

获取或设置对象集合中元素的HTML内容当没有给定content参数时返回对象集合中第一个元素的innerHtml当给定content参数时用其替换对象集合中每个元素的内容content可以是append中描述的所有类型

// autolink everything that looks like a Twitter username
$('.comment p').html(function(idx, oldHtml){
  return oldHtml.replace(/(^\W)@(\w{1,15})/g,
    '$1@<a href="http://twitter.com/$2">$2</a>')
})

index

index([element])  ⇒ number

获取一个元素的索引值愚人码头注从0开始计数当elemen参数没有给出时返回当前元素在兄弟节点中的位置当element参数给出时返回它在当前对象集合中的位置如果没有找到该元素则返回-1

$('li:nth-child(2)').index()  //=> 1

indexOf

indexOf(element, [fromIndex])  ⇒ number

Get the position of an element in the current collection. If fromIndex number is given, search only from that position onwards. Returns the 0-based position when found and -1 if not found. Use of index is recommended over this method.

在当前对象集合中获取一个元素的索引值愚人码头注从0开始计数如果给定formindex参数从该位置开始往后查找返回基于0的索引值如果没找到则返回-1index 方法是基于这个方法实现的

这是一个Zepto的方法不是jquer的api

insertAfter

insertAfter(target)  ⇒ self

将集合中的元素插入到指定的目标元素后面愚人码头注外部插入这个有点像 after但是使用方式相反

$('<p>Emphasis mine.</p>').insertAfter('blockquote')

insertBefore

insertBefore(target)  ⇒ self

将集合中的元素插入到指定的目标元素前面愚人码头注外部插入这个有点像 before但是使用方式相反

$('<p>See the following table:</p>').insertBefore('table')

is

is(selector)  ⇒ boolean

判断当前元素集合中的第一个元素是否符css选择器对于基础支持jquery的非标准选择器类似 :visible包含在可选的selector模块中

jQuery CSS extensions 不被支持 选择selector模块仅仅能支持有限几个最常用的方式

last

last()  ⇒ collection

获取对象集合中最后一个元素

$('li').last()

map

map(function(index, item){ ... })  ⇒ collection

遍历对象集合中的所有元素通过遍历函数返回值形成一个新的集合对象在遍历函数中this关键之指向当前循环的项遍历函数中的第二个参数

遍历中返回 nullundefined遍历将结束

// get text contents of all elements in collection
elements.map(function(){ return $(this).text() }).get().join(', ')

next

next()  ⇒ collection
next(selector)  ⇒ collection v1.0+

Get the next sibling–optionally filtered by selector–of each element in the collection.

获取对象集合中每一个元素的下一个兄弟节点(可以选择性的带上过滤选择器)

$('dl dt').next()   //=> the DD elements

not

not(selector)  ⇒ collection
not(collection)  ⇒ collection
not(function(index){ ... })  ⇒ collection

过滤当前对象集合获取一个新的对象集合它里面的元素不能匹配css选择器如果另一个参数为Zepto对象集合那么返回的新Zepto对象中的元素都不包含在该参数对象中如果参数是一个函数仅仅包含函数执行为false值得时候的元素函数的 this 关键字指向当前循环元素

与它相反的功能查看 filter.

offset

offset()  ⇒ object
offset(coordinates)  ⇒ self v1.0+
offset(function(index, oldOffset){ ... })  ⇒ self v1.0+

获得当前元素相对于document的位置返回一个对象含有 top, left, widthheight

当给定一个含有lefttop属性对象时使用这些值来对集合中每一个元素进行相对于document的定位

offsetParent v1.0+

offsetParent()  ⇒ collection

找到第一个定位过的祖先元素意味着它的css中的position 属性值为relative, absolute or fixed

parent

parent([selector])  ⇒ collection

获取对象集合中每个元素的直接父元素如果css选择器参数给出过滤出符合条件的元素

parents

parents([selector])  ⇒ collection

获取对象集合每个元素所有的祖先元素如果css选择器参数给出过滤出符合条件的元素

如果想获取直接父级元素使用 parent如果只想获取到第一个符合css选择器的元素使用closest

$('h1').parents()   //=> [<div#container>, <body>, <html>]

pluck

pluck(property)  ⇒ array

获取对象集合中每一个元素的属性值返回值为 nullundefined值得过滤掉

$('body > *').pluck('nodeName') // => ["DIV", "SCRIPT"]

// implementation of Zepto's `next` method
$.fn.next = function(){
  return $(this.pluck('nextElementSibling'))
}

这是一个Zepto的方法不是jquery的api

position v1.0+

position()  ⇒ object

获取对象集合中第一个元素的位置相对于 offsetParent当绝对定位的一个元素靠近另一个元素的时候这个方法是有用的

Returns an object with properties: top, left.

var pos = element.position()

// position a tooltip relative to the element
$('#tooltip').css({
  position: 'absolute',
  top: pos.top - 30,
  left: pos.left
})

prepend

prepend(content)  ⇒ self

将参数内容插入到每个匹配元素的前面愚人码头注元素内部插入插入d的元素可以试html字符串片段一个dom节点或者一个节点的数组

$('ul').prepend('<li>first list item</li>')

prependTo

prependTo(target)  ⇒ self

将所有元素插入到目标前面愚人码头注元素内部插入这有点像prepend但是是相反的方式

$('<li>first list item</li>').prependTo('ul')

prev

prev()  ⇒ collection
prev(selector)  ⇒ collection v1.0+

获取对象集合中每一个元素的前一个兄弟节点通过选择器来进行过滤

prop v1.0+

prop(name)  ⇒ value
prop(name, value)  ⇒ self
prop(name, function(index, oldValue){ ... })  ⇒ self

读取或设置dom元素的属性值它在读取属性值的情况下优先于 attr因为这些属性值会因为用户的交互发生改变如checkedselected

简写或小写名称比如for, class, readonly及类似的属性将被映射到实际的属性上比如htmlFor, className, readOnly, 等等

push

push(element, [element2, ...])  ⇒ self

Add elements to the end of the current collection.

添加元素到当前对象集合的最后

这是一个zepto的方法不是jquery的api

ready

ready(function($){ ... })  ⇒ self

添加一个事件侦听器当页面DOM加载完毕 DOMContentLoaded 事件触发时触发建议使用 $()来代替这种用法

reduce

reduce(function(memo, item, index, array){ ... }, [initial])  ⇒ value

Array.reduce有相同的用法遍历当前对象集合memo是函数上次的返回值迭代进行遍历

这是一个zepto的方法不是jquery的api

remove

remove()  ⇒ self

从其父节点中删除当前集合中的元素有效的从dom中移除

removeAttr

removeAttr(name)  ⇒ self

移除当前对象集合中所有元素的指定属性

removeClass

removeClass([name])  ⇒ self
removeClass(function(index, oldClassName){ ... })  ⇒ self

移除当前对象集合中所有元素的指定class如果没有指定name参数将移出所有的class多个class参数名称可以利用空格分隔下例移除了两个class

<input class="taiyang yueliang" id="check1" type="checkbox" checked="checked">
<input class="yaotaiyang" id="check2" type="checkbox"> <script type="text/javascript"> $("#check1").removeClass("taiyang yueliang") //=>[<input class id="check1" type="checkbox" checked="checked">] </script>

replaceWith

replaceWith(content)  ⇒ self

用给定的内容替换所有匹配的元素(包含元素本身)content参数可以为 before中描述的类型

scrollLeft v1.1+

scrollLeft()  ⇒ number
scrollLeft(value)  ⇒ self

获取或设置页面上的滚动元素或者整个窗口向右滚动的像素值

scrollTop v1.0+

scrollTop()  ⇒ number
scrollTop(value)  ⇒ self v1.1+

获取或设置页面上的滚动元素或者整个窗口向下滚动的像素值

show

show()  ⇒ self

恢复对象集合中每个元素默认的display值如果你用 hide将元素隐藏用该属性可以将其显示相当于去掉了displaynone

siblings

siblings([selector])  ⇒ collection

获取对象集合中所有元素的兄弟节点如果给定CSS选择器参数过滤出符合选择器的元素

size

size()  ⇒ number

获取对象集合中元素的数量

slice

slice(start, [end])  ⇒ array

提取这个数组array的子集从start开始如果给定end提取从从start开始到end结束的元素但是不包含end位置的元素

text

text()  ⇒ string
text(content)  ⇒ self
text(function(index, oldText){ ... })  ⇒ self v1.1.4+

获取或者设置所有对象集合中元素的文本内容当没有给定content参数时返回当前对象集合中第一个元素的文本内容包含子节点中的文本内容当给定content参数时使用它替换对象集合中所有元素的文本内容它有待点似 html与它不同的是它不能用来获取或设置 HTML

toggle

toggle([setting])  ⇒ self

显示或隐藏匹配元素如果 setting为true相当于show 法如果setting为false相当于 hide方法

var input = $('input[type=text]')
$('#too_long').toggle(input.val().length > 140)

toggleClass

toggleClass(names, [setting])  ⇒ self
toggleClass(function(index, oldClassNames){ ... }, [setting])  ⇒ self

在匹配的元素集合中的每个元素上添加或删除一个或多个样式类如果class的名称存在则删除它如果不存在就添加它如果 setting的值为真这个功能类似于 addClass如果为假这个功能类似与 removeClass

unwrap

unwrap()  ⇒ self

移除集合中每个元素的直接父节点并把他们的子元素保留在原来的位置 基本上这种方法删除上一的祖先元素同时保持DOM中的当前元素

$(document.body).append('<div id=wrapper><p>Content</p></div>')
$('#wrapper p').unwrap().parents()  //=> [<body>, <html>]

val

val()  ⇒ string
val(value)  ⇒ self
val(function(index, oldValue){ ... })  ⇒ self

获取或设置匹配元素的值当没有给定value参数返回第一个元素的值如果是<select multiple>标签则返回一个数组当给定value参数那么将设置所有元素的值

width

width()  ⇒ number
width(value)  ⇒ self
width(function(index, oldWidth){ ... })  ⇒ self

获取对象集合中第一个元素的宽或者设置对象集合中所有元素的宽

$('#foo').width()   // => 123
$(window).width()   // => 768 (viewport width)
$(document).width() // => 768 

wrap

wrap(structure)  ⇒ self
wrap(function(index){ ... })  ⇒ self v1.0+

在每个匹配的元素外层包上一个html元素structure参数可以是一个单独的元素或者一些嵌套的元素也可以是一个html字符串片段或者dom节点还可以是一个生成用来包元素的回调函数这个函数返回前两种类型的包裹片段

需要提醒的是该方法对于dom中的节点有着很好的支持如果将wrap() 用在一个新的元素上然后再将结果插入到document中此时该方法无效

// wrap each button in a separate span:
$('.buttons a').wrap('<span>')

// wrap each code block in a div and pre:
$('code').wrap('<div class=highlight><pre /></div>')

// wrap all form inputs in a span with classname
// corresponding to input type:
$('input').wrap(function(index){
  return '<span class=' + this.type + 'field />'
})
//=> <span class=textfield><input type=text /></span>,
//   <span class=searchfield><input type=search /></span>

// WARNING: will not work as expected!
$('<em>broken</em>').wrap('<li>').appendTo(document.body)
// do this instead:
$('<em>better</em>').appendTo(document.body).wrap('<li>')

wrapAll

wrapAll(structure)  ⇒ self

在所有匹配元素外面包一个单独的结构结构可以是单个元素或 几个嵌套的元素并且可以通过在作为HTML字符串或DOM节点

// wrap all buttons in a single div:
$('a.button').wrapAll('<div id=buttons />')

wrapInner

wrapInner(structure)  ⇒ self
wrapInner(function(index){ ... })  ⇒ self v1.0+

将每个元素中的内容包裹在一个单独的结构中结构可以是单个元件或多个嵌套元件并且可以通过在作为HTML字符串或DOM节点或者是一个生成用来包元素的回调函数这个函数返回前两种类型的包裹片段

// wrap the contents of each navigation link in a span:
$('nav a').wrapInner('<span>')

// wrap the contents of each list item in a paragraph and emphasis:
$('ol li').wrapInner('<p><em /></p>')

Detect methods

Detect module

该检测方法可以在不同的环境中微调你的站点或者应用程序并帮助你识别手机和平板以及不同的浏览器和操作系统

// The following boolean flags are set to true if they apply,
// if not they're either set to `false` or `undefined`.
// We recommend accessing them with `!!` prefixed to coerce to a boolean. 

// general device type
$.os.phone
$.os.tablet

// specific OS
$.os.ios
$.os.android
$.os.webos
$.os.blackberry
$.os.bb10
$.os.rimtabletos

// specific device type
$.os.iphone
$.os.ipad
$.os.ipod // [v1.1]
$.os.touchpad
$.os.kindle

// specific browser
$.browser.chrome
$.browser.firefox
$.browser.safari // [v1.1]
$.browser.webview // (iOS) [v1.1]
$.browser.silk
$.browser.playbook
$.browser.ie // [v1.1]

// 此外版本信息是可用的
// 下面是运行​​iOS 6.1的iPhone所返回的
!!$.os.phone         // => true
!!$.os.iphone        // => true
!!$.os.ios           // => true
$.os.version       // => "6.1"
$.browser.version  // => "536.26"

事件处理

$.Event

$.Event(type, [properties])  ⇒ event

创建并初始化一个指定的DOM事件如果给定properties对象使用它来扩展出新的事件对象默认情况下事件被设置为冒泡方式这个可以通过设置bubblesfalse来关闭

一个事件初始化的函数可以使用 trigger来触发

$.Event('mylib:change', { bubbles: false })

$.proxy v1.0+

$.proxy(fn, context)  ⇒ function
$.proxy(fn, context, [additionalArguments...])  ⇒ function v1.1.4+
$.proxy(context, property)  ⇒ function
$.proxy(context, property, [additionalArguments...])  ⇒ function v1.1.4+

接受一个函数然后返回一个新函数并且这个新函数始终保持了特定的上下文(context)语境新函数中this指向context参数另外一种形式原始的function是从上下文(context)对象的特定属性读取

如果传递超过2个的额外参数它们被用于 传递给fn参数的函数 引用

var obj = {name: 'Zepto'},
    handler = function(){ console.log("hello from + ", this.name) }

// ensures that the handler will be executed in the context of `obj`:
$(document).on('click', $.proxy(handler, obj))

bind 🐶🔫

不推荐, 使用 on 代替

bind(type, function(e){ ... })  ⇒ self
bind(type, [data], function(e){ ... })  ⇒ self v1.1+
bind({ type: handler, type2: handler2, ... })  ⇒ self
bind({ type: handler, type2: handler2, ... }, [data])  ⇒ self v1.1+

为一个元素绑定一个处理事件

delegate 🐶🔫

不推荐, 使用 on 代替

delegate(selector, type, function(e){ ... })  ⇒ self
delegate(selector, { type: handler, type2: handler2, ... })  ⇒ self

基于一组特定的根元素为所有选择器匹配的元素附加一个处理事件匹配的元素可能现在或将来才创建

die 🐶🔫

不推荐, 使用 on 代替

die(type, function(e){ ... })  ⇒ self
die({ type: handler, type2: handler2, ... })  ⇒ self

删除通过 live 添加的事件

event.isDefaultPrevented v1.1+

event.isDefaultPrevented()  ⇒ boolean

如果preventDefault()被该事件的实例调用那么返回true 这可作为跨平台的替代原生的 defaultPrevented属性如果 defaultPrevented缺失或在某些浏览器下不可靠的时候

// trigger a custom event and check whether it was cancelled
var event = $.Event('custom')
element.trigger(event)
event.isDefaultPrevented()

event.isImmediatePropagationStopped v1.1+

event.isImmediatePropagationStopped()  ⇒ boolean

如果stopImmediatePropagation()被该事件的实例调用那么返回trueZepto在不支持该原生方法的浏览器中实现它 例如老版本的Android

event.isPropagationStopped v1.1+

event.isPropagationStopped()  ⇒ boolean

如果stopPropagation()被该事件的实例调用那么返回true

live 🐶🔫

不推荐, 使用 on 代替

live(type, function(e){ ... })  ⇒ self
live({ type: handler, type2: handler2, ... })  ⇒ self

类似delegate添加一个个事件处理器到符合目前选择器的所有元素匹配匹配的元素可能现在或将来才创建

off

off(type, [selector], function(e){ ... })  ⇒ self
off({ type: handler, type2: handler2, ... }, [selector])  ⇒ self
off(type, [selector])  ⇒ self
off()  ⇒ self

移除通过 on 添加的事件.移除一个特定的事件处理程序 必须通过用on()添加的那个相同的函数否则只通过事件类型调用此方法将移除该类型的所有处理程序如果没有参数将移出当前元素上全部的注册事件

on

on(type, [selector], function(e){ ... })  ⇒ self
on(type, [selector], [data], function(e){ ... })  ⇒ self v1.1+
on({ type: handler, type2: handler2, ... }, [selector])  ⇒ self
on({ type: handler, type2: handler2, ... }, [selector], [data])  ⇒ self v1.1+

添加事件处理程序到对象集合中得元素上多个事件可以通过空格的字符串方式添加或者以事件类型为键以函数为值的对象 方式如果给定css选择器当事件在匹配该选择器的元素上发起时事件才会被触发愚人码头注即事件委派或者说事件代理

如果给定data参数这个值将在事件处理程序执行期间被作为有用的 event.data 属性

事件处理程序在添加该处理程序的元素或在给定选择器情况下匹配该选择器的元素的上下文中执行(愚人码头注this指向触发事件的元素) 当一个事件处理程序返回falsepreventDefault()stopPropagation()被当前事件调用的情况下 将防止默认浏览器操作如链接

如果false 在回调函数的位置上作为参数传递给这个方法 它相当于传递一个函数这个函数直接返回false愚人码头注即将 false 当作 function(e){ ... } 的参数作为 function(){ return false; } 的简写形式例如 $("a.disabled").on("click", false);这相当于$("a.disabled").on("click", function(){ return false; } );

var elem = $('#content')
// observe all clicks inside #content:
elem.on('click', function(e){ ... })
// observe clicks inside navigation links in #content
elem.on('click', 'nav a', function(e){ ... })
// all clicks inside links in the document
$(document).on('click', 'a', function(e){ ... })
// disable following any navigation link on the page
$(document).on('click', 'nav a', false)

one

one(type, [selector], function(e){ ... })  ⇒ self
one(type, [selector], [data], function(e){ ... })  ⇒ self v1.1+
one({ type: handler, type2: handler2, ... }, [selector])  ⇒ self
one({ type: handler, type2: handler2, ... }, [selector], [data])  ⇒ self v1.1+

添加一个处理事件到元素当第一次执行事件以后该事件将自动解除绑定保证处理函数在每个元素上最多执行一次selectordata 等参数说明请查看.on()

trigger

trigger(event, [args])  ⇒ self

在对象集合的元素上触发指定的事件事件可以是一个字符串类型也可以是一个 通过$.Event 定义的事件对象如果给定args参数它会作为参数传递给事件函数

// add a handler for a custom event
$(document).on('mylib:change', function(e, from, to){
  console.log('change on %o with data %s, %s', e.target, from, to)
})
// trigger the custom event
$(document.body).trigger('mylib:change', ['one', 'two'])

Zepto仅仅支持在dom元素上触发事件

triggerHandler

triggerHandler(event, [args])  ⇒ self

trigger它只在当前元素上触发事件但不冒泡


        $("input").triggerHandler('focus');
        // 此时input上的focus事件触发但是input不会获取焦点
        $("input").trigger('focus');
        // 此时input上的focus事件触发input获取焦点

unbind 🐶🔫

Deprecated, use off instead.

unbind(type, function(e){ ... })  ⇒ self
unbind({ type: handler, type2: handler2, ... })  ⇒ self

移除通过 bind 注册的事件

undelegate 🐶🔫

Deprecated, use off instead.

undelegate(selector, type, function(e){ ... })  ⇒ self
undelegate(selector, { type: handler, type2: handler2, ... })  ⇒ self

移除通过delegate 注册的事件


Ajax 请求

$.ajax

$.ajax(options)  ⇒ XMLHttpRequest

执行Ajax请求它可以是本地资源或者通过支持HTTP access control的浏览器 或者通过 JSONP来实现跨域

选项:

  • type(默认 GET)请求方法 (GET, POST, or other)
  • url (默认 当前地址)发送请求的地址
  • data (默认none)发送到服务器的数据如果是GET请求它会自动被作为参数拼接到url上非String对象将通过 $.param 得到序列化字符串
  • processData (默认 true) 对于非Get请求是否自动将 data 转换为字符串
  • contentType (默认 application/x-www-form-urlencoded) 发送信息至服务器时内容编码类型 (这也可以通过设置 headers)通过设置 false 跳过设置默认值
  • mimeType (默认 none): 覆盖响应的MIME类型 v1.1+
  • dataType (默认 none)预期服务器返回的数据类型(json, jsonp, xml, html, or text)
  • jsonp (默认callback): JSONP回调查询参数的名称
  • jsonpCallback (默认 jsonp{N}): 全局JSONP回调函数的 字符串或返回的一个函数名设置该项能启用浏览器的缓存 v1.1+
  • timeout (默认 0): 以毫秒为单位的请求超时时间, 0 表示不超时
  • headers: Ajax请求中额外的HTTP信息头对象
  • async (默认true): 默认设置下所有请求均为异步如果需发送同步请求请将此设置为 false
  • global (默认true): 请求将触发全局Ajax事件处理程序设置为 false 将不会触发全局 Ajax 事件
  • context (默认window): 这个对象用于设置Ajax相关回调函数的上下文(this指向)
  • traditional (默认 false): 激活传统的方式通过$.param来得到序列化的 data
  • cache (默认 true): 浏览器是否应该被允许缓存GET响应从v1.1.4开始当dataType选项为 "script"jsonp时默认为false
  • xhrFields (默认 none): 一个对象包含的属性被逐字复制到XMLHttpRequest的实例 v1.1+
  • username & password (默认 none): HTTP基本身份验证凭据 v1.1+

如果URL中含有 =?或者dataType是jsonp这讲求将会通过注入一个 <script>标签来代替使用 XMLHttpRequest (查看 JSONP)此时 contentType, dataType, headers有限制async 不被支持

Ajax 回调函数

你可以指定以下的回调函数他们将按给定的顺序执行

  1. beforeSend(xhr, settings)请求发出前调用它接收xhr对象和settings作为参数对象如果它返回 false 请求将被取消

  2. success(data, status, xhr)请求成功之后调用传入返回后的数据以及包含成功代码的字符串

  3. error(xhr, errorType, error)请求出错时调用 (超时解析错误或者状态码不在HTTP 2xx)

  4. complete(xhr, status)请求完成时调用无论请求失败或成功

Promise 回调接口 v1.1+

如果可选的callbacks 和 deferred 模块被加载从$.ajax()返回的XHR对象实现了promise接口链式的回调

xhr.done(function(data, status, xhr){ ... })
xhr.fail(function(xhr, errorType, error){ ... })
xhr.always(function(){ ... })
xhr.then(function(){ ... })

这些方法取代了 success, error, 和 complete 回调选项.

Ajax 事件

global: true时在Ajax请求生命周期内以下这些事件将被触发

  1. ajaxStart (global)如果没有其他Ajax请求当前活跃将会被触发

  2. ajaxBeforeSend (data: xhr, options)再发送请求前可以被取消

  3. ajaxSend (data: xhr, options)像 ajaxBeforeSend但不能取消

  4. ajaxSuccess (data: xhr, options, data)当返回成功时

  5. ajaxError (data: xhr, options, error)当有错误时

  6. ajaxComplete (data: xhr, options)请求已经完成后无论请求是成功或者失败

  7. ajaxStop (global)如果这是最后一个活跃着的Ajax请求将会被触发

默认情况下Ajax事件在document对象上触发然而如果请求的 context 是一个DOM节点该事件会在此节点上触发然后再DOM中冒泡唯一的例外是 ajaxStart & ajaxStop这两个全局事件

$(document).on('ajaxBeforeSend', function(e, xhr, options){
  // This gets fired for every Ajax request performed on the page.
  // The xhr object and $.ajax() options are available for editing.
  // Return false to cancel this request.
})

$.ajax({
  type: 'GET',
  url: '/projects',
  // data to be added to query string:
  data: { name: 'Zepto.js' },
  // type of data we are expecting in return:
  dataType: 'json',
  timeout: 300,
  context: $('body'),
  success: function(data){
    // Supposing this JSON payload was received:
    //   {"project": {"id": 42, "html": "<div>..." }}
    // append the HTML to context object.
    this.append(data.project.html)
  },
  error: function(xhr, type){
    alert('Ajax error!')
  }
})

// post a JSON payload:
$.ajax({
  type: 'POST',
  url: '/projects',
  // post payload:
  data: JSON.stringify({ name: 'Zepto.js' }),
  contentType: 'application/json'
})

$.ajaxJSONP 🐶🔫

不推荐, 使用 $.ajax 代替

$.ajaxJSONP(options)  ⇒ mock XMLHttpRequest

执行JSONP跨域获取数据

此方法相对 $.ajax 没有优势建议不要使用

$.ajaxSettings

一个包含Ajax请求的默认设置的对象大部分的设置在 $.ajax中已经描述以下设置为全局非常有用

  • timeout (默认 0)对Ajax请求设置一个非零的值指定一个默认的超时时间以毫秒为单位
  • global (默认 true)设置为false以防止触发Ajax事件
  • xhr (默认XMLHttpRequest factory)设置为一个函数它返回XMLHttpRequest实例(或一个兼容的对象)
  • accepts: 从服务器请求的MIME类型指定dataType值
    • script: text/javascript, application/javascript
    • json: application/json
    • xml: application/xml, text/xml
    • html: text/html
    • text: text/plain

$.get

$.get(url, function(data, status, xhr){ ... })  ⇒ XMLHttpRequest
$.get(url, [data], [function(data, status, xhr){ ... }], [dataType])  ⇒ XMLHttpRequest v1.0+

执行一个Ajax GET请求这是一个 $.ajax的简写方式

$.get('/whatevs.html', function(response){
  $(document.body).append(response)
})

$.getJSON

$.getJSON(url, function(data, status, xhr){ ... })  ⇒ XMLHttpRequest
$.getJSON(url, [data], function(data, status, xhr){ ... })  ⇒ XMLHttpRequest v1.0+

通过 Ajax GET请求获取JSON数据这是一个 $.ajax 的简写方式

$.getJSON('/awesome.json', function(data){
  console.log(data)
})

// fetch data from another domain with JSONP
$.getJSON('//example.com/awesome.json?callback=?', function(remoteData){
  console.log(remoteData)
})

$.param

$.param(object, [shallow])  ⇒ string
$.param(array)  ⇒ string

序列化一个对象在Ajax请求中提交的数据使用URL编码的查询字符串表示形式如果shallow设置为true嵌套对象不会被序列化嵌套数组的值不会使用放括号在他们的key上

如果任何对象的某个属性值是一个函数而不是一个字符串该函数将被调用并且返回值后才会被序列化

此外还接受 serializeArray格式的数组其中每个项都有 name 和 value属性

$.param({ foo: { one: 1, two: 2 }})
//=> "foo[one]=1&foo[two]=2)"

$.param({ ids: [1,2,3] })
//=> "ids[]=1&ids[]=2&ids[]=3"

$.param({ ids: [1,2,3] }, true)
//=> "ids=1&ids=2&ids=3"

$.param({ foo: 'bar', nested: { will: 'not be ignored' }})
//=> "foo=bar&nested[will]=not+be+ignored"

$.param({ foo: 'bar', nested: { will: 'be ignored' }}, true)
//=> "foo=bar&nested=[object+Object]"

$.param({ id: function(){ return 1 + 2 } })
//=> "id=3"

$.post

$.post(url, [data], function(data, status, xhr){ ... }, [dataType])  ⇒ XMLHttpRequest

执行Ajax POST请求这是一个 $.ajax 的简写方式

$.post('/create', { sample: 'payload' }, function(response){
  // process response
})

data 参数可以是一个字符串

$.post('/create', $('#some_form').serialize(), function(response){
  // ...
})

load

load(url, function(data, status, xhr){ ... })  ⇒ self

通过GET Ajax载入远程 HTML 内容代码并插入至 当前的集合 中另外一个css选择器可以在url中指定像这样可以使用匹配selector选择器的HTML内容来更新集合

$('#some_element').load('/foo.html #bar')

如果没有给定CSS选择器将使用完整的返回文本

请注意在没有选择器的情况下任何javascript块都会执行如果带上选择器匹配选择器内的script将会被删除


表单方法

serialize

serialize()  ⇒ string

在Ajax post请求中将用作提交的表单元素的值编译成 URL编码的 字符串

serializeArray

serializeArray()  ⇒ array

将用作提交的表单元素的值编译成拥有namevalue对象组成的数组不能使用的表单元素buttons未选中的radio buttons/checkboxs 将会被跳过结果不包含file inputs的数据

$('form').serializeArray()
//=> [{ name: 'size', value: 'micro' },
//    { name: 'name', value: 'Zepto' }]

submit

submit()  ⇒ self
submit(function(e){ ... })  ⇒ self

为 "submit" 事件绑定一个处理函数或者触发元素上的 "submit" 事件当没有给定function参数时触发当前表单submit事件并且执行默认的提交表单行为除非调用了 preventDefault()

当给定function参数时在当前元素上它简单得为其在submit事件绑定一个处理函数


Effects

$.fx

全局地动画设置

  • $.fx.off (在支持css transition 的浏览器中默认为false)设置true来禁止所有animate() transitions

  • $.fx.speeds用来设置动画时间的对象

    • _default (400 ms)
    • fast (200 ms)
    • slow (600 ms)

改变现有值或者添加一个新属性去影响使用一个字符串来设置时间的动画

animate

animate(properties, [duration, [easing, [function(){ ... }]]])  ⇒ self
      animate(properties, { duration: msec, easing: type, complete: fn })  ⇒ self
      animate(animationName, { ... })  ⇒ self
  

对当前对象集合中元素进行css transition属性平滑过渡

  • properties: 一个对象该对象包含了css动画的值或者css帧动画的名称
  • duration (默认 400)以毫秒为单位的时间或者一个字符串
    • fast (200 ms)
    • slow (600 ms)
    • 任何$.fx.speeds自定义属性
  • easing (默认 linear)指定动画的缓动类型使用以下一个
  • complete动画完成时的回调函数
  • li>delay: 以毫秒为单位的过度延迟时间 v1.1+

Zepto 还支持以下 CSS transform 属性

  • translate(XYZ3d)
  • rotate(XYZ3d)
  • scale(XYZ)
  • matrix(3d)
  • perspective
  • skew(XY)

如果duration参数为 0$.fx.off 为 true(在不支持css transitions的浏览器中默认为true)动画将不被执行替代动画效果的目标位置会即刻生效类似的如果指定的动画不是通过动画完成而且动画的目标位置即可生效这种情况下没有动画 complete方法也不会被调用

如果第一个参数是字符串而不是一个对象它将被当作一个css关键帧动画 CSS keyframe animation的名称

$("#some_element").animate({
        opacity: 0.25,
        left:
        '50px',
        color:
        '#abcdef',
        rotateZ:
        '45deg',
        translate3d: '0,10px,0'
        }, 500,
        'ease-out')
    

Zepto只使用css过渡效果的动画jquery的easings不会支持jquery的相对变化("=+10px") syntax 也不支持请查看 list of animatable properties浏览器的支持可能不同所以一定要测试你所想要支持的浏览器


Touch

Touch events

touch模块添加以下事件可以使用 onoff

  • tap 元素tap的时候触发
  • singleTap and doubleTap  这一对事件可以用来检测元素上的单击和双击(如果你不需要检测单击双击使用 tap 代替)
  • longTap  当一个元素被按住超过750ms触发
  • swipe, swipeLeft, swipeRight, swipeUp, swipeDown  当元素被划过时触发(可选择给定的方向)

这些事件也是所有Zepto对象集合上的快捷方法

<style>.delete { display: none; }</style>

<ul id=items>
  <li>List item 1 <span class=delete>DELETE</span></li>
  <li>List item 2 <span class=delete>DELETE</span></li>
</ul>

<script>
// show delete buttons on swipe
$('#items li').swipe(function(){
  $('.delete').hide()
  $('.delete', this).show()
})

// delete row on tapping delete button
$('.delete').tap(function(){
  $(this).parent('li').remove()
})
</script>

Change Log

v1.1.0  05 Dec 2013  diff

Notable changes

  • IE10+ support
  • Huge speed optimizations for simple CSS selectors (classname, ID) and DOM element creation
  • Provide $.Callbacks and $.Deferred in optional modules
  • Removed fx and detect modules from default build

Ajax

  • New supported $.ajax() options:
    • xhrFields
    • mimeType
    • jsonpCallback
    • username & password
  • Promise interface supported when loading the optional callbacks and deferred modules:
    • xhr.done(function(data, status, xhr){ ... })
    • xhr.fail(function(xhr, errorType, error){ ... })
    • xhr.always(function(){ ... })
  • Enable mutating Ajax settings in the beforeSend callback
  • Fix JSONP callbacks for errored responses on Android
  • Ensure consistent Accept request HTTP header across browsers
  • Fix $.param() for jQuery compatibility when handling complex nested objects
  • Support IIS JavaScript MIME type
  • Pass abort and timeout status to global ajaxError event handlers

Event

  • Provide isDefaultPrevented(), stopImmediatePropagation(), and related methods for all events
  • Support the data argument in .bind(), .on(), and .one()
  • Support CSS selector argument in .one() for event delegation
  • Support .on('ready') as an alias for .ready()
  • Enable event handlers on plain old JS objects
  • Many fixes related to event delegation

Data

  • Cleanup .data() values on DOM element removal with .remove/empty()
  • .data() now assumes that numbers that begin with zeroes are strings
  • .removeData() (no argument) now removes all data on the element
  • Enable reading data-* attributes that have underscores in the name

Misc.

  • Support simple DOM property names in .prop(name) such as for, class, readonly
  • Implement the .scrollLeft([value]) method
  • Support setting .scrollTop(value)
  • Fix $(document).width/height()
  • Support fetching multiple CSS values via array in .css(['prop1', 'prop2', ...])
  • Support setting CSS transition delay via delay option for .animate()
  • Ensure that .animate() callback always firesParty like its one-oh!_

v1.0  02 Mar 2013  diff

Party like its one-oh!

Notable changes

  • Zepto is now compatible with Twitter Bootstrap
  • Portable, completely new node.js-based build system
  • Fully automated tests with PhantomJS and Travis CI
  • Removed touch module from default distribution

New features

  • $.fn.filter(function(index){ ... })
  • $.fn.contents()
  • $.fn.wrapInner()
  • $.fn.scrollTop()
  • $.contains()
  • $.fn.has()
  • $.fn.position()
  • $.fn.offsetParent()
  • $.parseJSON()
  • $.camelCase()
  • $.isWindow()
  • $.grep() (interface to Array.filter)
  • Support $(html, attributes) syntax for element creation
  • Emulate mouseenter and mouseleave events
  • Bootstrap compat: support $.fn.offset(coordinates)
  • Bootstrap compat: implement $.fn.detach()
  • Add support for Ajax cache: false option
  • Prevent scrolling when horizontal swipe events are detected
  • cancelTouch for tap events
  • prev and next now support an optional selector argument
  • $.fn.find and $.fn.closest now support Zepto objects as arguments
  • Enable deep copy via $.extend(true, target, source)
  • Enable nested structures for $.fn.wrap() and $.fn.wrapAll()
  • Enable function arguments for $.fn.wrap() and $.fn.wrapInner()
  • Support number, boolean, JSON types in data attributes
  • Support manipulating classnames on SVG elements
  • Enable named durations for animate, e.g. slow.
  • Support timing-function for animate
  • Support event properties passed to $.fn.trigger() or $.Event()
  • Selector module: support child > * queries
  • Add detect support for mobile Chrome browser
  • Add $.os.phone and $.os.tablet (booleans)
  • Detect Firefox mobile, Playbooks and BB10

Fixes

  • Fix passing null selector to on or off
  • Fixed bug where self-closing html tags would act as open tags
  • Fix val for multiple select
  • Fix various touch and gesture bugs.
  • Corrected parameters of load success callback to match jQuery.
  • Fix css with 0 values and falsy values
  • Fix a css performance issues with string values
  • Fix $.ajaxJSONP when invoked directly
  • Fix animate with 0 durations.
  • Fix toggle and fadeToggle for multiple elements.
  • Fix ajax $.fn.load behavior with selector
  • Make attr(name, null) unset attribute
  • Fix animate in Firefox
  • Fix animate for elements just added to DOM
  • Fix an escaping issue with $.param
  • Respect traditional: true option in $.ajax
  • Fix focus & blur event delegation and enable unbind
  • Simple wrapping for any object passed to $()
  • Enable children method for XML documents
  • Dont eval <script> content when src is present
  • Support processData option for $.ajax()
  • Enable passing contentType: false to $.ajax()
  • Apply focus() and blur() to all elements in collection
  • Change $.fn.map() to return a Zepto collection
  • Selector argument for on(evt, selector, fn) can be false
  • Dont raise error on $('#')
  • Provide empty object in $.support
  • return false in event handler calls stopPropagation()
  • Fix $.isPlainObject() for window in Opera
  • $.ajax error callback correctly reports abort status
  • Fix hasClass in collections of multiple elements
  • Stop iteration in each() when the callback returns false
  • Add ability to set xhr factory per-request
  • Have get() method accept negative index
  • Support for multiple class names in toggleClass()
  • Fix error callbacks for ajaxJSONP
  • Support optional data argument for various Ajax methods
  • Fix DOM insertion operators for null values
  • Fix dataType being set for $.getJSON

v1.0rc1  09 Apr 2012  diff

The semicolon-free edition! Thats right, we removed all trailing semicolons from the source and tests. They were never needed anyway.

New methods:

New module:

  • selector.js with experimental support for jQuery CSS pseudo-selectors such as :visible and :first

Improvements in core:

  • added missing methods for Ember.js compatibility
  • improved creating DOM fragments from HTML with $()
  • enable append & family to accept multiple arguments
  • fix $.each context
  • fix calling get without index
  • fix calling val on empty collection
  • using css(property, '') removes the property
  • fix filter, is, and closest when operating on nodes that are detached from the document
  • remove end & andSelf from core to the new stack.js plugin
  • exposed important internal Zepto functions through the $.zepto object for extending or overriding Zepto functionality.
  • data method returns undefined when there is no data
  • support camelized names in data method

Apart from improving the basic data method in core, the data.js module got improvements as well:

  • better jQuery compatibility
  • ability to store functions
  • new removeData method

Ajax:

  • have correct ajaxComplete argument order for JSONP abort and timeout
  • JSONP requests that hit a 404 will now correctly invoke the error callback
  • add support for dataType: 'jsonp' in $.ajax
  • add support for data in $.ajaxJSONP
  • HTTP 304 status is treated as success instead of an error
  • made load more compatible with jQuery
  • allow Content-Type to be set via request headers
  • respect Content-Type of the response if dataType isnt set
  • work around Chrome CORS bug when data is empty

Changes in other modules:

  • fix animate for edge cases such as when there is an animation within an animated element, and improve handling of transition CSS properties
  • new singleTap event
  • improved longTap detection

0.8  03 Nov 2011  diff

  • CSS transitions for every browser with animate() method;
  • unified event handling with fn.on() & off();
  • Ajax global events & timeout support;
  • performance boost for selectors.

See full release notes.

0.7  01 Aug 2011  diff

  • add $.each, $.map, $.slice;
  • add .serializeArray(), .serialize();
  • add .triggerHandler();
  • add .wrap, .wrapAll, .unwrap, .width/height setters, .append (and friends) improvements;
  • add longTap event;
  • .anim() accepts CSS transform properties;
  • return false in event handlers cancels browser event behavior.

0.6  14 May 2011  diff

  • add .add, .appendTo, .prependTo, .replaceWith, .empty, .submit;
  • allow function args for .add/.remove/.toggleClass;
  • improvements to events and xhr.

0.5  01 Mar 2011  diff

  • add .not, .children, .siblings, $.param;
  • improve .attr & .html;
  • support callback for .anim.

0.4  21 Jan 2011  diff

  • JSONP;
  • better .find, .each, .closest;
  • add .eq, .size, .parent, .parents, .removeAttr, .val;
  • support function args in .html, .attr;
  • adjacency methods now take Zepto objects.

0.3  17 Dec 2010  diff

  • add .toggleClass, .attr setter, .last, .undelegate, .die;
  • proxied event objects for event delegation;
  • support $ fragments.

0.2  01 Dec 2010  diff

  • now compatible with backbone.js;
  • support event unbind;
  • ajax posts with data.

Acknowledgements & Thanks

A big Thank-You goes out to all of our awesome Zepto.js contributors. May you all forever bask in glory.

The Zepto API is based on jQuery's Core API, which is released under the MIT license.

This documentation is based on the layout of the Backbone.js documentation, which is released under the MIT license.

© 2010-2014 Thomas Fuchs, Freckle Online Time Tracking
Zepto and this documentation is released under the terms of the MIT license.

糯康辩护律师:未感觉他想抵赖曾问及涉案罪名
西宁书记系今年第8位被查省部级高官
现代汉语词典第6版收录被代表雷人等新词
薄熙来涉嫌受贿贪污滥用职权案提起公诉
美韩和朝鲜演习水平有巨大差距
男子乱坐机位反打空姐耳光被拘留5天
甘肃载20吨炸药货车与油罐车刮碰致交通中断
王石川:“征你一头牛,补你一只鸡”该改了
装备撤离阅兵村 最后一批今夜撤离
申江服务导报社总编辑徐锦江寄语
美防长:反对削弱日本在钓鱼岛管治的单边行动
监察部长:难以拿出我国裸官具体数据
男子利用高科技赌博获刑 骰子可遥控控制大小
瑞海国际的“擦边球”
美媒称日本可能取代中国成为美最大海外债主
菲律宾外长称若天气好转将派船重返黄岩岛
解放军现役远程火箭炮数量全面超过俄罗斯
老人取款时拉住银行保安:我被威胁了 快报警
石原慎太郎:即使被捕也亲自前往钓鱼岛
视频:英国女王主持仪式欢迎胡锦涛来访