MooTools1.2.4 API

[url]http://mootools.net/docs[/url]

[b][color=red]注:参数列表中括号里的参数是可选参数,不是数组。[/color][/b]

[align=center][color=red][b]Core[/b][/color][/align]

[b]$chk(item):[/b]
[i]item - mixed[/i]

item为null、undefined、false和空字符串时返回false,否则(包括为0时)返回true。

[b]$clear(timer):[/b]
[i]timer - number[/i]

用于清除timeout或者interval,参数timer为timeout或者interval的id。

[b]$defined(obj):[/b]
[i]obj - mixed[/i]

当obj为null或者undefined时返回false,否则返回true。

[b]$arguments(index)[/b]
[i]index - number[/i]

返回一个function,这个function的返回值是传递给它的参数列表中第index+1个参数。
例:
var secondArgument = $arguments(1);
alert(secondArgument('a','b','c')); //Alerts "b".

源码:
function $arguments(i){
return function(){
return arguments[i];
};
};


[b]$empty:[/b]

返回一个空function,仅仅作占位符用。
源码:
function $empty(){};


[b]$lambda(value):[/b]
[i]value - mixed[/i]

返回一个function,如果参数value是一个function,则直接返回该function;否则返回一个新function,这个function的返回值是传递给$lambda的参数value。
例:
myLink.addEvent('click', $lambda(false)); //Prevents a link Element from being clickable.

源码:
function $lambda(value){
return ($type(value) == 'function') ? value : function(){
return value;
};
};


[b]$extend(original, extension):[/b]
[i]original - object
extension - object[/i]

用extension扩展original,从extension中复制所有属性到original中。
例:
var firstObj = {
'name': 'John',
'lastName': 'Doe'
};
var secondObj = {
'age': '20',
'sex': 'male',
'lastName': 'Dorian'
};
$extend(firstObj, secondObj);
//firstObj is now: {'name': 'John', 'lastName': 'Dorian', 'age': '20', 'sex': 'male'};


[b]$merge(obj1, obj2...):[/b]
[i]obj - object[/i]

递归的合并n个对象。和ruby中hash的merge差不多,不同的是mootools的merge是递归的:
 {:a=>1,:b=>{:c=>3,:d=>4}}.merge({:b=>{:c=>2}}) #=> {:a=>1, :b=>{:c=>2}}

$merge({a: 1}, {b: {c: 3, d: 4}}, {a: 1, b: {c: 2}})//{a: 1, b: {c: 2, d: 4}}


[b]$each(iterable, fn, [bind]):[/b]
[i]iterable - object OR array
fn - function(item, index, object)
item - mixed
index - number
object - object 被遍历的对象或数组本身
bind - object[/i]

用fn遍历iterable,同时可用第3个参数object指定fn上下文。
例:
$each([1,2,3], function(item,index,array){alert('['+array+']的第'+(index+1)+'个元素是:'+item+'.'+this+'.');}, 'context');


[b]$pick([var1, [var2, ...]]):[/b]
[i]varn - mixed[/i]

返回第一个非null非undefined的值。
例:
function say(infoMessage, errorMessage){
alert($pick(errorMessage, infoMessage, 'There was no message supplied.'));
}
say(); //Alerts "There was no message supplied."
say("This is an info message."); //Alerts "This is an info message."
say("This message will be ignored.", "This is the error message."); //Alerts "This is the error message."


[b]$random(min, max):[/b]
[i]min - number
max - number[/i]

返回min和max之间的一个随机值。

[b]$splat(obj):[/b]
[i]obj - mixed[/i]

假如参数obj为数组,则直接返回该数组;否则将obj包装成数组再返回。

[b]$time():[/b]

以时间戳的形式返回当前时间。(实现很有意思,就一句return +new Date,这里有个隐式的类型转换,相当于 0 + Number(new Date))

[b]$try(fn[, fn[, fn...]]):[/b]
[i]fn - function[/i]

尝试调用传递进来的所有function,如果没有任何一个function执行成功,返回null;如果有function能够成功执行,则执行之,并返回该function的返回值。
例:
$try(function(){alert(a);},function(){alert(0);}, function(){alert(9);})


[b]$type(obj):[/b]
[i]obj - mixed[/i]

返回obj的类型名。详见下面的列表:

[quote] * 'element' - (string) If object is a DOM element node.
* 'textnode' - (string) If object is a DOM text node.
* 'whitespace' - (string) If object is a DOM whitespace node.
* 'arguments' - (string) If object is an arguments object.
* 'array' - (string) If object is an array.
* 'object' - (string) If object is an object.
* 'string' - (string) If object is a string.
* 'number' - (string) If object is a number.
* 'date' - (string) If object is a date.
* 'boolean' - (string) If object is a boolean.
* 'function' - (string) If object is a function.
* 'regexp' - (string) If object is a regular expression.
* 'class' - (string) If object is a Class (created with new Class, or the extend of another class).
* 'collection' - (string) If object is a native htmlelements collection, such as childNodes, getElementsByTagName, etc.
* 'window' - (string) If object is the window object.
* 'document' - (string) If object is the document object.
* 'event' - (string) If object is an event.
* false - (boolean) If object is undefined, null, NaN or none of the above.[/quote]

[align=center][color=red][b]Browser[/b][/color][/align]
[b]Browser.Features.xpath[/b] - (boolean) 如果浏览器支持XPath的方式查询DOM则该值为true。
[b]Browser.Features.xhr[/b] - (boolean) 如果浏览器支持XMLHTTP对象则该值为true。
[b]Browser.Engine.trident[/b] - (boolean) True if the current browser uses the trident engine (e.g. Internet Explorer).
[b]Browser.Engine.gecko[/b] - (boolean) True if the current browser uses the gecko engine (e.g. Firefox, or any Mozilla Browser).
[b]Browser.Engine.webkit[/b] - (boolean) True if the current browser uses the webkit engine (e.g. Safari, Google Chrome, Konqueror).
[b]Browser.Engine.presto[/b] - (boolean) True if the current browser uses the presto engine (e.g. Opera 9).
[b]Browser.Engine.name[/b] - (string) The name of the engine.
[b]Browser.Engine.version[/b] - (number) The version of the engine. (e.g. 950)
[b]Browser.Plugins.Flash.version [/b]- (number) The major version of the flash plugin installed.
[b]Browser.Plugins.Flash.build[/b] - (number) The build version of the flash plugin installed.
[b]Browser.Platform.mac[/b] - (boolean) True if the platform is Mac.
[b]Browser.Platform.win[/b] - (boolean) True if the platform is Windows.
[b]Browser.Platform.linux[/b] - (boolean) True if the platform is Linux.
[b]Browser.Platform.ipod[/b] - (boolean) True if the platform is an iPod touch / iPhone.
[b]Browser.Platform.other[/b] - (boolean) True if the platform is neither Mac, Windows, Linux nor iPod.
[b]Browser.Platform.name[/b] - (string) The name of the platform.

[color=red][align=center][b]Array[/b][/align][/color]

[b]each(fn[, bind]):[/b]
[i]fn - function(item, index, array)
item - mixed
index - number
array - array 被遍历的数组本身
bind - object 同$each()的bind[/i]

用fn遍历该数组。

[b]every(fn[, bind]):[/b]
[i]参数同each[/i]

用fn遍历数组,如果每次fn的返回值都为true,则every()的返回值为true;否则every返回false。

例:
[1,2,3].every(function(item){return item<5;}); //返回true


[b]filter(fn[, bind]):[/b]
[i]参数同each[/i]

用fn遍历数组,返回一个新数组,过滤掉使fn返回false的元素。
例:
[1,2,3].filter(function(item){return item>2;}); //返回[3]


[b]clean():[/b]

返回一个新数组,清除掉原数组中所有null和undefined值。
例:
var myArray = [null, 1, 0, true, false, "foo", undefined, ""];
myArray.clean() // returns [1, 0, true, false, "foo", ""]


[b]indexOf(item[, from]):[/b]
[i]item - object
from - number[/i]

返回item的索引值。如果未找到item,返回-1。from为查找item的起始位置,默认为0。
例:
[1,2,3,4,1].indexOf(1,1); // 返回4


[b]map(fn[, bind]):[/b]
[i]参数同each[/i]

用fn遍历数组,对数组中的每个元素进行修改,返回修改后的新数组。
例:
[1,2,3].map(function(item){return item+1;});//返回[2,3,4]


[b]some(fn[, each]):[/b]
[i]参数同each[/i]

用fn遍历数组,只要数组中有一个元素使fn返回true,则some()返回true,否则返回false。
例:
[1,2,3].some(function(item){return item==3});//返回true


[b]associate(array):[/b]
[i]array - array[/i]

把两个数组合并为一个键值对。
例:
[1,2,3].associate(['a','b','c']);//返回{a:1,b:2,c:3}


[b]link(object):[/b]
[i]object - object[/i]

参数是一个键值对,其中值为function。link方法用这些function测试数组,并根据其返回值返回一个新的键值对。
例:
[1,2,3].link({a:function(i){return i<2;}, b: function(i){return i==2;}, c: function(i){return i>2;}});//返回{a:1, b:2, c:3}


[b]contains(item[, from]):[/b]
[i]item - object
from - number[/i]

测试数组中是否存在指定元素。可以用参数from指定起始位置。

[b]extend(array):[/b]
[i]array - array[/i]
连接两个数组。(不太明白为什么还要这个方法,js数组本身有一个concat方法似乎够用了)
例:
[1].extend([1,2]);//[1,1,2]


[b]getLast():[/b]

返回数组的最后一个元素。

[b]getRandom():[/b]

随机返回数组中的一个元素。

[b]include(item):[/b]
[i]item - object[/i]

往数组中添加item,如果数组中已经存在item,则不对原数组做任何操作。

[b]combine(array):[/b]
[i]array - array[/i]

连接两个数组,不允许元素重复。
例:
[1,2,3].combine([1,4,5]);//[1,2,3,4,5]


[b]erase(item):[/b]
[i]item - object[/i]

删除数组中所有指定的元素。
['Cow', 'Pig', 'Dog', 'Cat', 'Dog'].erase('Dog') //returns ['Cow', 'Pig', 'Cat']


[b]empty():[/b]

清空数组。

[b]flatten():[/b]

把n维数组转换成1维数组。

[1,2,3,[4,5, [6,7]], [[[8]]]].flatten();//[1,2,3,4,5,6,7,8]


[b]hexToRgb([array]):[/b]
[i]array - boolean[/i]

把数组形式的16进制颜色值转换成RGB值。如果给一个参数true,RGB值将以数组形式返回。
例:
['11','22','33'].hexToRgb(); //returns "rgb(17,34,51)"
['11','22','33'].hexToRgb(true); //returns [17, 34, 51]


[b]rgbToHex([array]):[/b]
[i]array - boolean[/i]

与hexToRgb相反。

[b]$A(iterable):[/b]
[i]iterable - array[/i]

复制一份数组。

[color=red][align=center][b]Function[/b][/align][/color]

[b]create([options]):[/b]
[i]options - object[/i]

用function创建一个闭包。Function的其它方法的实现(除了run方法)都基于该方法。options为一个键值对集合,可选项有:
[b]bind[/b] - 略
[b]event - mixed[/b] 默认为false。如果设置为true,闭包会变成一个事件监听器,并且接受一个事件对象作为第1个参数。如果设置为一个Class,闭包则接受一个该类的实例作为第1个参数,该实例以事件对象做为构造函数的参数构造。
[b]arguments - mixed[/b] 传递给闭包的参数,如果要传递多个参数,必须以数组的形式传入。如果同时设置了event选项,事件对象将作为第1个参数传递给闭包,通过arguments设置的参数紧跟其后。
[b]delay - number[/b] 指定调用该闭包时延迟执行的时间。返回值是一个timer的id。
[b]periodical - number[/b] 指定闭包执行的周期。返回值是一个timer的id。
[b]attempt - boolean[/b] 默认为false,如果设置为true,闭包会在创建成功后立即执行。如果执行成功,返回该闭包的返回值。如果执行失败则返回null。

[b]pass([args[, bind]]):[/b]
[i]args - mixed
bind - object[/i]

用function创建一个闭包,并给这个闭包传递一些参数,绑定上下文。

[b]attempt([args[, bind]]):[/b]
[i]args - mixed
bind - object[/i]

同pass,立即执行。如果执行成功,返回该闭包的返回值。如果执行失败则返回null。

[b]bind([bind[, args]]):[/b]
[i]bind - object
args - mixed[/i]

用function创建一个闭包,并给这个闭包绑定一个上下文,再传递一些参数。

[b]bindWithEvent([bind[, args]]):[/b]
[i]bind - object
args - mixed[/i]

用function创建一个闭包,并给这个闭包绑定一个上下文,再传递一些参数。同时将该闭包作为事件监听器(第1个参数为事件对象,args紧跟其后,bind为this引用的上下文)。

[b]delay(delay[, bind[, args]]):[/b]
用function创建一个闭包,延迟指定的毫秒数执行。返回值是一个timer的id。bind、args不再赘述。

[b]periodical(period[, bind[, args]]):[/b]
用function创建一个闭包,并指定闭包执行的周期。返回值是一个timer的id。

[b]run(args[, bind]):[/b]
同apply,但是颠倒了参数的位置。同时可以接受单个参数。跟attempt很像,但attempt用了$try,run则是直接用apply实现的。(create内部也用了apply,attempt和run的主要区别只是attempt通过$try调用,run则没有。)

[align=center][color=red][b]Number[/b][/color][/align]

[b]limit(min, max):[/b]
[i]min - number
max - number[/i]

限制该数值的上下限,如果该数值在上下限之间,返回该数值,否则返回上限值或下限值。(注意参数顺序,第1个是下限,第2个是上限,否则会得到预期之外的结果。)
例:
(1).limit(0, 2)// 返回1
(1).limit(2, 3)// 返回2
(1).limit(-1, 0)// 返回0


[b]round([precision]):[/b]
[i]precision - number[/i]

四舍五入,可以用指定精度,默认为0。精度可以是负数。
例:
(12.45).round()   //Returns: 12
(12.45).round(1) //Returns: 12.5
(12.45).round(-1) //Returns: 10


[b]times(fn[, bind]):[/b]
[i]fn - function
bind - object[/i]

调用传入的function N次。
例:
(4).times(alert); //Alerts "0", then "1", then "2", then "3".


[b]toFloat()[/b]

把数值转换成浮点型。

[b]toInt([base]):[/b]
base - number

把数值转换成整型,同时可指定基数。

[align=center][color=red][b]String[/b][/color][/align]

test(regex[, params])
[i]regex - mixed
params - string[/i]

测试字符串是否匹配某个正则表达式。第一个参数regex可以是一个正则对象,也可以是一个字符串。第2个参数params可选,但只在第一个参数regex为字符串时有用,用于构造正则对象。
例:
"I like cookies".test("cookie"); //returns true
"I like cookies".test("COOKIE", "i"); //returns true (ignore case)
"I like cookies".test("cake"); //returns false


[b]contains(string[, separator]):[/b]
[i]string - string
separator - string[/i]

测试字符串中是否包含某个字符串。(看不出这个separator有什么用)

'a bc'.contains('bc'); //returns true
'a b c'.contains('c', ' '); //returns true
'a bc'.contains('b', ' '); //returns false


[b]trim():[/b]

去掉字符串两头的空格和换行符。

[b]clean():[/b]

去掉多余的空格和所有换行符,并且去掉字符串两头的空格。
例:
" i      like     cookies      \n\n".clean(); //returns "i like cookies"


[b]camelCase():[/b]

把连字符(-)连接的字符串转换成驼峰形式。
例:
"I-like-cookies".camelCase(); //returns "ILikeCookies"


[b]hyphenate():[/b]

与camelCate相反。

[b]capitalize():[/b]

把字符串中每个单词的首字母转换成大写形式。
例:
"i like cookies".capitalize(); //returns "I Like Cookies"


[b]escapeRegExp():[/b]

将字符串中的正则字符转义。
例:
'animals.sheep[1]'.escapeRegExp(); //returns 'animals\.sheep\[1\]'


[b]toInt([base]):[/b]

将字符串转换成整型,并可指定基数。用parseInt实现,转换规则同parseInt。

[b]toFloat():[/b]

将字符串转换成浮点型。

[b]hexToRgb([array]):[/b]
[i]array - boolean[/i]

将hex形式的颜色字符串转换成RGB形式的字符串,如果参数为true,则转换结果为数组。
例:
"#123".hexToRgb(); //returns "rgb(17,34,51)"
"112233".hexToRgb(); //returns "rgb(17,34,51)"
"#112233".hexToRgb(true); //returns [17, 34, 51]


[b]rgbToHex([array]):[/b]
[i]array - boolean[/i]

将RGB形式的字符串转换成hex形式。如果参数为true,则转换结果为数组。
例:
"rgb(17,34,51)".rgbToHex(); //returns "#112233"
"rgb(17,34,51)".rgbToHex(true); //returns ['11','22','33']
"rgba(17,34,51,0)".rgbToHex(); //returns "transparent"


[b]stripScripts(option):[/b]
[i]option - mixed[/i]

将字符串中的<script>标签以及其中的内容删除掉。如果参数option为true,在方法返回之前会先执行script标签中的脚本。如果参数option为function,在方法返回之前会调用该function,该function接受两个参数,第1个参数是<script>标签之间的javascript脚本,第2个参数是去掉<script>标签之后的字符串。
例:
var myString = "<script>alert('Hello')</script>Hello, World.";
myString.stripScripts(); //Returns "Hello, World."
myString.stripScripts(true); //Alerts "Hello", then returns "Hello, World."
myString.stripScripts(function(script,text){$exec(script);alert(text);});//Alerts "Hello", then alerts "Hello, World."


[b]substitute(object[, regexp]):[/b]
[i]object - mixed
regexp - regexp[/i]

用一个键值对(参数object)对字符串中的内容进行替换,用一个正则表达式(参数regexp)指定匹配规则。正则默认值为/\?{([^}]+)}/g
例:
var myString = "{subject} is {property_1} and {property_2}.";
var myObject = {subject: 'Jack Bauer', property_1: 'our lord', property_2: 'savior'};
myString.substitute(myObject); //Jack Bauer is our lord and savior


[align=center][color=red][b]Hash[/b][/color][/align]
[color=green][i]A custom Object ({}) implementation which does not account for prototypes when setting, getting, or iterating. Useful because in JavaScript, we cannot use Object.prototype. Instead, we can use Hash.prototype![/i][/color]

[b]constructor([object]):[/b]
[i]object - mixed[/i]

构造一个hash。

[b]each(fn[, bind]):[/b]
[i]fn - function(value, key, hash)
value - mixed
key - string
hash - hash
bind - object[/i]

遍历hash。

[b]has(key):[/b]
[i]key - string[/i]

测试hash中是否存在指定的键。

[b]keyOf(item):[/b]
[i]item - mixed[/i]

返回指定值的key。如果指定的item在hash中不存在,则返回false。

[b]hasValue(value):[/b]
[i]value - mixed[/i]

测试hash中是否存在指定的值。

[b]extend(properties):[/b]
[i]properties - object[/i]

用properties扩展hash,properties中如果有与原hash重复的键,将会覆盖原hash中的键值对。
例:
var hash = new Hash({
'name': 'John',
'lastName': 'Doe'
});
var properties = {
'age': '20',
'sex': 'male',
'lastName': 'Dorian'
};
hash.extend(properties);
//hash now holds an object containing: { 'name': 'John', 'lastName': 'Dorian', 'age': '20', 'sex': 'male' };


[b]combine([properties]):[/b]
[i]properties - object[/i]

联合两个hash,与extend不同的是:properties中如果有与原hash重复的键,将忽略properties中的键值对。

[b]erase(key):[/b]
[i]key - string[/i]

删除指定键的键值对。

[b]get(key):[/b]
[i]key - string[/i]

获取指定键对应的值。如果指定的键不存在,返回null。

[b]set(key, value):[/b]
[i]key - string
value - mixed[/i]

为指定的键设置一个值,如果键已经存在,则覆盖。

[b]empty():[/b]

清空hash。

[b]include(key, value):[/b]
[i]key - string
value - mixed[/i]

往hash中添加一个键值对,如果键已经存在则不做任何操作。

[b]map(fn[, bind]):[/b]
[i]fn - function(value, key, hash)
bind - object[/i]

用fn遍历hash,修改每一个键值对,返回修改后的hash。
例:
var timesTwo = new Hash({a: 1, b: 2, c: 3}).map(function(value, key){
return value * 2;
}); //timesTwo now holds an object containing: {a: 2, b: 4, c: 6};


[b]filter(fn[, bind]):[/b]
[i]fn - function(value, key, hash)
bind - object[/i]

用fn遍历hash,过滤掉不满足条件的键值对,返回过滤后的hash。

[b]every(fn[, bind]):[/b]
[i]fn - function
bind - object[/i]

用fn遍历hash,如果hash中的每一对键值对都满足条件则返回true,否则返回false。

[b]some(fn[, bind]):[/b]
[i]fn - function(value, key, has)
bind - object[/i]

用fn遍历hash,如果hash中有任何一对键值对满足条件则返回true,否则返回false。

[b]getClean():[/b]

返回一个干净的不带Hash.prototype的Object。
例:
var hash = new Hash({
'name': 'John',
'lastName': 'Doe'
});
hash = hash.getClean(); // hash doesnt contain Hash prototypes anymore
hash.each() //error!


[b]getKeys():[/b]

返回hash中所有的键组成的数组。

[b]getValues():[/b]

返回hash中所有的值组成的数组。

[b]getLength():[/b]

返回hash中键值对的数量。

[b]toQueryString():[/b]

把hash转换成url查询字符串的形式。
例:
var hash = new Hash({'name': 'John', 'lastName': 'Doe'});
hash.toQueryString();//返回"name=John&lastName=Doe"


[b]$H(object):[/b]

new Hash的快捷方式。
源码:
function $H(object){
return new Hash(object);
};


[align=center][color=red][b]Event[/b][/color][/align]

new Event(event[, win])
[i]event - event
win - window[/i]

构造event。可以通过第2个参数win给event设置上下文。

MooTools Event的属性:
[quote] * shift - (boolean) True if the user pressed the shift key.
* control - (boolean) True if the user pressed the control key.
* alt - (boolean) True if the user pressed the alt key.
* meta - (boolean) True if the user pressed the meta key.
* wheel - (number) The amount of third button scrolling.
* code - (number) The keycode of the key pressed.
* page.x - (number) The x position of the mouse, relative to the full window.
* page.y - (number) The y position of the mouse, relative to the full window.
* client.x - (number) The x position of the mouse, relative to the viewport.
* client.y - (number) The y position of the mouse, relative to the viewport.
* key - (string) The key pressed as a lowercase string. key can be 'enter', 'up', 'down', 'left', 'right', 'space', 'backspace', 'delete', and 'esc'.
* target - (element) The event target, not extended with $ for performance reasons.
* relatedTarget - (element) The event related target, NOT extended with $.[/quote]

例:
$('myText').addEvent('keydown', function(event){
//The passed event parameter is already an instance of the Event class.
alert(event.key); //Returns the lowercase letter pressed.
alert(event.shift); //Returns true if the key pressed is shift.
if (event.key == 's' && event.control) alert('Document saved.'); //Executes if the user hits Ctr+S.
});


[b]stop():[/b]

stopPropagation + preventDefault。另外MooTools重写了……更正确的说法是为自己的Event类添加了跨平台的stopPropagation和preventDefault方法。

[b]stopPropagation():[/b]
阻止事件传播(包括“捕获”和“冒泡”)。

[b]preventDefault():[/b]
中止事件默认的行为。

[b]Event.Keys[/b]
这是一个hash(是的,MooTools的hash),可以用来添加自定义的event key code。
例:
Event.Keys.shift = 16;
$('myInput').addEvent('keydown', function(event){
if (event.key == "shift") alert("You pressed shift.");
});


[align=center][color=red][b]Class[/b][/color][/align]

[b]constructor(properties):[/b]
[i]properties - object/function[/i]

构造一个类。如果properties是一个function,它将被当作类的构造方法。如果是一个object,这个object将作为类的属性集。同时,这个object接受3个特别的属性:Extends、Implements和initialize。

initialize - function: 用作该类的构造方法。
Extends - class: 作为该类所继承的类,子类将拥有父类所有的属性,并且在子类中可以通过parent调用父类的同名方法。
Implements - mixed: 当该属性是一个对象或者类时,它的所有属性将被复制到新类中;如果是一个数组,则遍历数组中的对象或类,依次复制这些对象或类的属性到新类中。

[b]implement(properties):[/b]
[i]properties - object[/i]

用于给类动态的添加属性或者方法。
例:
var Animal = new Class({
initialize: function(age){
this.age = age;
}
});
Animal.implement({
setName: function(name){
this.name = name;
}
});
var myAnimal = new Animal(20);
myAnimal.setName('Micia');
alert(myAnimal.name); //alerts 'Micia'


[align=center][color=red][b]Class Extras:Chain[/b][/color][/align]

[b]constructor():[/b]

For new classes:
var MyClass = new Class({ Implements: Chain });

For existing classes:
MyClass.implement(Chain);

Stand alone
var myChain = new Chain;


例:

var Todo = new Class({
Implements: Chain,
initialize: function(){
this.chain.apply(this, arguments);
}
});

var myTodoList = new Todo(
function(){ alert('get groceries'); },
function(){ alert('go workout'); },
function(){ alert('code mootools documentation until eyes close involuntarily'); },
function(){ alert('sleep'); }
);


[b]chain(fn[, fn2[, fn3....]]):[/b]
[i]fn - function[/i]

把参数中的function存入Chain实例的调用队列中。
例:
var c = new Chain
c.chain(function(){alert(1);});
c.chain(function(){alert(2);});
c.chain(function(){alert(3);});

c.callChain();// Alerts 1
c.callChain();// Alerts 2
c.callChain();// Alerts 3


[b]callChain([args]):[/b]
[i]args - mixed[/i]

调用Chain实例中的function,并返回该function的返回值。可以通过参数args给Chain中的function传递参数。

[b]clearChain():[/b]

清除Chain中所有的function。返回值为Chain实例本身。

[align=center][color=red][b]Class Extras:Events[/b][/color][/align]

For new classes:
var MyClass = new Class({ Implements: Events });

For existing classes:
MyClass.implement(Events);


Events类可以被实现到其它的类中,以增加其它类的功能。
Events类被设计为可以跟Options类很好的合作。当option的属性名以'on'开头并且后面跟着一个大写字母开头的单词时,这个option将被当用事件添加进来。(例如'onComplete'将被当用'complete'事件添加进来)
例:
var Widget = new Class({
Implements: Events,
initialize: function(element){
// ...
},
complete: function(){
this.fireEvent('complete');
}
});

var myWidget = new Widget();
myWidget.addEvent('complete', myFunction);


[b]addEvent(type, fn[, internal]):[/b]
[i]type - string
fn - function
internal - boolean[/i]

给某个对象添加事件。添加事件时,第3个参数internal如果为true,该事件将不能被removeEvent、removeEvents方法移除。

[b]addEvents(events):[/b]
[i]events - object[/i]

通过键值对的形式给某个对象添加一系列事件。
例:
var myFx = new Fx.Tween('element', 'opacity');
myFx.addEvents({
'start': myStartFunction,
'complete': function() {
alert('Done.');
}
});


[b]fireEvent(type[, args[, delay]]):[/b]
[i]type - string
args - mixed
delay - number[/i]

触发某个事件。可以给该事件传递参数,如果参数不止一个,则需要用数组的形式。参数delay可以指定延迟事件所绑定的function执行的时间,单位为毫秒。
例:
var Widget = new Class({
Implements: Events,
complete: function(arg1, arg2){
this.fireEvent("complete", [arg1, arg2], 500);
}
});
var w = new Widget;
w.addEvent('complete', function(a,b){alert(a+b)});
w.complete(1,2);


[b]removeEvent(type, fn):[/b]
[i]type - string
fn - function[/i]

移除对象中某个类型的事件中指定的监听器。

[b]removeEvents([events]):[/b]
[i]events - mixed[/i]

移除对象中的事件监听器。参数可选。当不传参数时,移除所有事件的所有监听器;当参数为string类型时,移除指定类型事件的所有监听器;当参数为以事件类型为键、function为值的object类型时,移除该键值对中指定的所有事件监听器。

[align=center][color=red][b]Class Extras: Options[/b][/color][/align]

For new classes:
var MyClass = new Class({Implements: Options});

For existing classes:
MyClass.implement(Options);


[b]setOptions([options]):[/b]
[i]options - object[/i]

给实现了Options的类的对象设置options。当option的属性名以'on'开头并且后面跟着一个大写字母开头的单词时,这个option将被当用事件添加进来。(例如'onComplete'将被当用'complete'事件添加进来)
例:
var Widget = new Class({
Implements: Options,
options: {
color: '#fff',
size: {
width: 100,
height: 100
}
},
initialize: function(options){
this.setOptions(options);
}
});

var myWidget = new Widget({
color: '#f00',
size: {
width: 200
}
});

//myWidget.options is now: {color: #f00, size: {width: 200, height: 100}}


[align=center][color=red][b]Element[/b][/color][/align]
[b]window.$(el)[/b]
[i]el - mixed[/i]

$的作用有两个:通过id获取页面上的元素;给IE浏览器的HTML元素添加所有Element的方法。如果参数el为element对象,并且该element对象还未被MooTools扩展,则该element对象将被扩展,否则直接返回该element;如果参数el为字符串,MooTools则会将其当作元素的id,并通过该id找到对应的元素,再扩展,返回扩展后的element,如果id不存在,则返回null;如果参数el为普通对象,并且该对象有一个toElement方法,则该对象的toElement方法将被调用,返回值为调用toElement后的element,如果对象没有toElement方法则返回null。

[i]因为MooTools会自动检测一个element是否需要被扩展,所以$可以操作同一个element多次并且不会有任何问题。[/i]

[b]window.$$(aTag[, anElement[, Elements[, ...]):[/b]
接受任意数量的以下类型参数:
[i]HTMLCollection
elements数组
elements
作为选择器的字符串[/i]

返回值为一个各元素都被$扩展后的element数组。

[b]constructor(element[, properties]):[/b]
[i]element - mixed
properties - object[/i]

创建一个新的Element对象。参数element可以是一个Dom element,也可以是一个字符串(字符串用作元素标签名)。参数properties用于给Element对象添加属性。
例:
var myAnchor = new Element('a', {
'href': 'http://mootools.net',
'class': 'myClass',
'html': 'Click me!',
'styles': {
'display': 'block',
'border': '1px solid black'
},
'events': {
'click': function(){
alert('clicked');
},
'mouseover': function(){
alert('mouseovered');
}
}
});


[b]getElement(selector):[/b]
[i]selector - string[/i]

获取element对象的第1个匹配selector的子元素。[color=red]该方法同样适合于document对象。[/color]

[b]getElements(selector):[/b]
[i]selector - string[/i]
获取element对象所有匹配selector的子元素,以数组形式返回。

[b]getElementById(id):[/b]
[i]id - string[/i]
获取element对象中指定id的子元素。

[b]set(arguments):[/b]
[i]arguments - arguments[/i]

为element对象设置属性。当参数为两个时:
[b]set(property, value):[/b]
[i]property - string
value - mixed[/i]
例:
$('myElement').set('text', 'text goes here');
$('myElement').set('class', 'active');
//The 'styles' property passes the object to Element:setStyles.
var body = $(document.body).set('styles', {
'font': '12px Arial',
'color': 'blue'
});

当参数为一个对象时:
[b]set(properties):[/b]
[i]properties - object[/i]
例:
var myElement = $('myElement').set({
//The 'styles' property passes the object to Element:setStyles.
'styles': {
'font': '12px Arial',
'color': 'blue',
'border': '1px solid #f00'
},
//The 'events' property passes the object to Element:addEvents.
'events': {
'click': function(){ alert('click'); },
'mouseover': function(){ this.addClass('over') }
},
//Any other property uses Element:setProperty.
'id': 'documentBody'
});


所有的property参数都将被传递给Element.Properties这个Hash中相应的方法。
如果在Element.Properties中没有找到相应的方法,则调用该element的setProperty方法。
使用Element.Properties来设置属性的时候,属性名请使用小写、简化的形式,例如:
使用'for'而不是 'htmlFor',
使用'class'而不是 'className'
使用'frameborder'而不是 'frameBorder'

[b]get(property):[/b]
[i]property - string[/i]
获取element对象的属性。

[b]erase(property):[/b]
[i]property - string[/i]
移除element对象的属性。

[b]match(match):[/b]
[i]match - mixed[/i]
测试element对象是否与传进来的参数匹配。当参数match为字符串时,将被当作选择器来测试;当参数match为element对象时,如果与被测对象是同一对象(element == match),则返回true。

[b]inject(el[, where]):[/b]
[i]el - mixed
where - string[/i]

把element对象插入另一个element对象中。参数el可以是element对象,也可以是字符串。当参数el为字符串时表示要插入的element的id。 可以使用参数where指定插入的位置。可选项有:[i]top、bottom、before、after[/i]。默认值为bottom。

[b]grab(el[, where]):[/b]
[i]el - mixed
where - string[/i]

往element对象中插入另一个element对象。

[b]adopt(el[, others]):[/b]
[i]el - mixed
others - mixed[/i]

和grab一样,但是可以同时往element对象中插入多个其它element对象(可以是数组形式,也可以是多个参数)。
例:
myParent.adopt(myFirstElement);
myParent2.adopt(myFirstElement, 'mySecondElement');
myParent3.adopt([myFirstElement, mySecondElement, myThirdElement]);


[b]wraps(el[, where]):[/b]
[i]el - mixed
where - string[/i]

和grab差不多,不同的是grab将被包围的element移动到包围它的element中;而wraps则是将包围element的对象移动到被包围的element的周围。

[b]appentText(text[, where]):[/b]
[i]text - string
where -string[/i]
也和grap差不多,所不同的是appentText接受的第一个参数不是一个element对象或者它的id,而是一段要往该element中插入的文本。

[b]dispose():[/b]
从DOM中移除该element。返回值是element对象本身,以便重新将该element插入DOM中。

[b]clone([contents, keepid]):[/b]
[i]contents - boolean
keepid - boolean[/i]

复制element对象并返回。如果参数contents为true,复本将拥有被复制的element的子节点;否则仅复制element本身,不包括子节点。contents默认为true。参数keepid用于指定复本是否拥有原element的id属性(对所有子节点都有效),默认为false。

[b]replaces(el):[/b]
[i]el - mixed[/i]

替换指定的element对象。参数el可以是被替换的element,也可以是它的id。

[b]hasClass(className):[/b]
[i]className - string[/i]

判断element对象是否拥有指定的class。

[b]addClass(className):[/b]
[i]className - string[/i]

为elemenet对象添加一个class。

[b]removeClass(className):[/b]
[i]className - string[/i]

为elemenet对象移除一个class。

[b]toggleClass(className):[/b]
[i]className - string[/i]

如果element对象有指定的class,则移除它;否则添加指定的class。

[b]getPrevious([match]):[/b]
[i]match - string[/i]

获取element的上一个同级element。可用match设置条件,match是一个选择器。

[b]getAllPrevious([match]):[/b]
[i]match - string[/i]

和getPrevious()差不多,只是getAllPrevious返回一个匹配的所有element的数组,getPrevious只返回第一个匹配的element对象。

[b]getNext([match]):[/b]
[i]match - string[/i]

和getPrevious相反。

[b]getAllNext([match]):[/b]
[i]match - string[/i]

和getAllPrevious相反。

[b]getFirst([match]):[/b]
[i]match - string[/i]

返回第一个子节点。可用match设置过滤条件,match是一个选择器。

[b]getLast([match]):[/b]
[i]match - string[/i]

返回最后一个子节点。可用match设置过滤条件,match是一个选择器。

[b]getParent([match]):[/b]
[i]match - string[/i]

返回第一个父节点。可用match设置过滤条件,match是一个选择器。

[b]getParents([match]):[/b]
[i]match - string[/i]

返回所有父节点。可用match设置过滤条件,match是一个选择器。

[b]getChildren([match]):[/b]
[i]match - string[/i]

返回所有子节点。可用match设置过滤条件,match是一个选择器。

[b]hasChild(el):[/b]
[i]el - mixed[/i]

测试element对象是否有子对象el。el可以是一个element对象或者id。

[b]empty():[/b]

清空element对象的所有子节点。

[b]destroy():[/b]

删除element对象以及其子节点,并进行内存释放。返回null。

[b]toQueryString():[/b]

根据element及其子节点的name和value转换成url的查询字符串。

[b]getSelected():[/b]

获取select元素中被选中的option,以数组形式返回。

[b]getProperty(property):[/b]
[i]property - string[/i]

返回element的属性值。

[b]getProperties(property1[, property2...]):[/b]
[i]property - string[/i]

以键值对的形式返回element指定的属性集。

[b]setProperty(name, value):[/b]

给element对象设置一个属性值。

[b]setProperties(properties):[/b]
[i]properties - object[/i]

给element对象设置一组属性值。

removeProperty(property):
[i]property - string[/i]

移除element对象的某个属性。

[b]removeProperties(property1[, property2...]):[/b]
[i]property - string[/i]

移除element对象的一组属性。

[b]store(key, value):[/b]
[i]key - string
value - mixed[/i]

把key/value存在一个与该element相关联的一个hash里,相当于给element创建了一个自定义属性。store、retrieve以及eliminate是MooTools1.2新增的内容,详见:[url]http://mootools.net/docs/core/Element/Element[/url]

[b]retrieve(key):[/b]
[i]key - string[/i]

把用store方法存进去的value用key取出来。

[b]eliminate(key):[/b]
[i]key - string[/i]

把用store方法存进去的整个键值对通过key删除。

[align=center][color=red][b]Element.Properties[/b][/color][/align]
笔记先到此为止……进度太慢,明天起直接做东西。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值