Core
Native
Class
Element
Utilities
Fx
Request
Plugins
- Fx.Slide
- Fx.Scroll
- Fx.Elements
- Drag
- Drag.Move
- Color
- Group
- Hash.Cookie
- Sortables
- Tips
- SmoothScroll
- Slider
- Scroller
- Assets
- Accordion
次の関数はWindowメソッドとして扱われます。
ドル関数には二つの目的があります : IDで要素を取得すること、そしてInternet ExplorerにすべてのElementメソッドを"掴ませる"ことです。
var myElement = $(el);
var myElement = $('myElement');
var div = document.getElementById('myElement'); div = $(div); //要素に対してすべてのElementメソッドが適用されます。
DOM要素を選び出し、拡張します。$$の戻り値である配列内の要素は、すべてのElementメソッドを持っています。
var myElements = $$(aTag[, anElement[, Elements[, ...]);
$$('a'); //ページ内のすべてのアンカータグからなる配列を返します。 $$('a', 'b'); //ページ内のすべてのアンカータグとボールドタグからなる配列を返します。
$$('#myElement'); //'myElement'というIDを持つ要素だけからなる配列を返します。 $$('#myElement a.myClass'); //'myElement'というIDを持つDOM要素に含まれており、なおかつ'myClass'というクラス名を持つすべてのアンカータグからなる配列を返します。
//引数として渡されたすべての要素とセレクターにマッチした要素を返す配列を生成します。 $$(myelement1, myelement2, 'a', '#myid, #myid2, #myid3', document.getElementsByTagName('div'));
拡張されたDOM要素ならば、すべてのメソッドが使えるようにカスタマイズされたNativeです。
渡されたタイプの新しい要素を作ります。
var myEl = new Element(element[, properties]);
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'); } } });
渡されたタグ名にマッチする最初の子要素を取得します。Selectorsがインクルードされていれば、CSSセレクターを渡すことができます。
var myElement = myElement.getElement(tag);
var firstDiv = $(document.body).getElement('div');
渡されたタグ名にマッチする子要素をすべて取得します。Selectorsがインクルードされていれば、CSSセレクターを渡すことができます。
var myElements = myElement.getElements(tag);
var allAnchors = $(document.body).getElements('a');
特定のIDを持つ子要素を取得します。
var myElement = anElement.getElementById(id);
var myChild = $('myParent').getElementById('myChild');
"動的引数"メソッドです。渡されたプロパティがElement.Propertiesハッシュの'セットしたい'プロパティのいずれかになります。
myElement.set(arguments);
$('myElement').set('text', 'text goes here'); $('myElement').set('class', 'active'); //'styles'プロパティにElement:setStylesのオブジェクトを渡す var body = $(document.body).set('styles', { 'font': '12px Arial', 'color': 'blue' });
var myElement = $('myElement').set({ //'styles'プロパティにElement:setStylesのオブジェクトを渡す。 'styles': { 'font': '12px Arial', 'color': 'blue', 'border': '1px solid #f00' }, //'events'プロパティにElement:addEventsのオブジェクトを渡す。 'events': { 'click': function(){ alert('click'); }, 'mouseover': function(){ this.addClass('over') } }, //その他のプロパティにはElement:setPropertyを利用する。 'id': 'documentBody' });
"動的引数"メソッドです。渡されたプロパティがElement.Propertiesハッシュの'取得したい'プロパティのいずれかになります。
myElement.get(property);
var tag = $('myDiv').get('tag'); //戻り値 "div".
var id = $('myDiv').get('id'); //戻り値 "myDiv". var value = $('myInput').get('value'); //myInput要素の値を返します。
"動的引数"メソッドです。渡されたプロパティがElement.Propertiesハッシュの'消去したい'プロパティのいずれかになります。
myElement.erase(property);
$('myDiv').erase('id'); //myDivからIDを取り除きます。 $('myDiv').erase('class'); //myDiv要素は設定されていたクラス名を持っていません。
渡された引数がその要素にマッチするかどうか、テストします。
myElement.match(match);
//#myDivがdivならば、trueを返します。 $('myDiv').match('div');
//#myDiv内にname属性が"bar"でクラスがfooという要素があればtrue。 $('myDiv').match('.foo[name=bar]');
var el = $('myDiv'); $('myDiv').match(el); //戻り値 true $('otherElement').match(el); //戻り値 false
その要素の子要素として、特定の位置(第2引数でしていします)に要素を挿入します。
myElement.inject(el[, where]);
var myFirstElement = new Element('div', {id: 'myFirstElement'}); var mySecondElement = new Element('div', {id: 'mySecondElement'}); var myThirdElement = new Element('div', {id: 'myThirdElement'});
<div id="myFirstElement"></div> <div id="mySecondElement"></div> <div id="myThirdElement"></div>
myFirstElement.inject(mySecondElement);
<div id="mySecondElement"> <div id="myFirstElement"></div> </div>
myThirdElement.inject(mySecondElement, 'top');
<div id="mySecondElement"> <div id="myThirdElement"></div> <div id="myFirstElement"></div> </div>
myFirstElement.inject(mySecondElement, 'before');
<div id="myFirstElement"></div> <div id="mySecondElement"></div>
myFirstElement.inject(mySecondElement, 'after');
<div id="mySecondElement"></div> <div id="myFirstElement"></div>
Element:injectと似ていますが、正反対の働きをします。
子要素を起点にした特定の位置(whereパラメータで指定します)に、要素を加えます。myElement.grab(el[, where]);
var myFirstElement = new Element('div', {id: 'myFirstElement'}); var mySecondElement = new Element('div', {id: 'mySecondElement'}); myFirstElement.grab(mySecondElement);
<div id="myFirstElement"> <div id="mySecondElement"></div> </div>
Element:grabと同じ働きをしますが、複数の要素を適用することができます。
メソッドを実行した要素に、渡された要素を挿入します(結果的に親要素となります)。myParent.adopt(el[, others]);
var myFirstElement = new Element('div', {id: 'myFirstElement'}); var mySecondElement = new Element('a', {id: 'mySecondElement'}); var myThirdElement = new Element('ul', {id: 'myThirdElement'}); myParent.adopt(myFirstElement); myParent2.adopt(myFirstElement, 'mySecondElement'); myParent3.adopt([myFirstElement, mySecondElement, myThirdElement]);
<div id="myParent"> <div id="myFirstElement" /> </div> <div id="myParent2"> <div id="myFirstElement" /> <a /> </div> <div id="myParent3"> <div id="myFirstElement" /> <a /> <ul /> </div>
Element:grabと同じ働きをしますが、グラブした要素を移動する代わりに、この要素でターゲットを包みます。
メソッドを実行した要素は渡された要素の場所まで移動し、その親要素となります。myParent.wraps(el[, where]);
<div id="myFirstElement"></div>
var mySecondElement = new Element('div', {id: 'mySecondElement'}); mySecondElement.wraps($('myFirstElement'));
<div id="mySecondElement"> <div id="myFirstElement"></div> </div>
Element:grabと同じ働きをしますが、IDや要素そのものではなく、テキストだけを受け取ります。 テキストノードが要素内に生成され、最上部か最下部に挿入されます。
myElement.appendText(text);
<div id="myElement">Hey.</div>
$('myElement').appendText(' Howdy.');
<div id="myElement">Hey. Howdy.</div>
DOMから要素を削除します。
var removedElement = myElement.dispose();
<div id="myElement"></div> <div id="mySecondElement"></div>
$('myElement').dispose();
<div id="mySecondElement"></div>
要素を複製して返します。
var copy = myElement.clone([contents, keepid]);
<div id="myElement"></div>
//要素を複製して、要素の次にコピーを挿入します。 var clone = $('myElement').clone().injectAfter('myElement');
<div id="myElement">ciao</div>
<div>ciao</div>
この要素を渡された要素で置換します。
var element = myElement.replaces(el);
$('myNewElement').replaces($('myOldElement')); //$('myOldElement')はなくなって、$('myNewElement')がその場所に入りました。
この要素が渡されたクラス名を持っているか、確かめます。
var result = myElement.hasClass(className);
<div id="myElement" class="testClass"></div>
$('myElement').hasClass('testClass'); //戻り値true
要素が指定したクラス名を持っていない場合、そのクラス名を加えます。
myElement.addClass(className);
<div id="myElement" class="testClass"></div>
$('myElement').addClass('newClass');
<div id="myElement" class="testClass newClass"></div>
Element:addClassと似た働きをしますが、要素からクラス名を取り除きます。
myElement.removeClass(className);
<div id="myElement" class="testClass newClass"></div>
$('myElement').removeClass('newClass');
<div id="myElement" class="testClass"></div>
その要素が指定したクラス名を持っているか否かに応じて、クラス名を付け加えたり削除したりします。
myElement.toggleClass(className);
<div id="myElement" class="myClass"></div>
$('myElement').toggleClass('myClass');
<div id="myElement" class=""></div>
$('myElement').toggleClass('myClass');
<div id="myElement" class="myClass"></div>
この要素のpreviousSiblingを返します(テキストノードは除きます)。
var previousSibling = myElement.getPrevious([match]);
Element:getPreviousと同じですが、マッチしたすべてpreviousSibling(同階層にある一つ前の要素)のを返します。
Element:getPreviousと同じですが、nextSibling(同階層にある一つ後の要素)を探します (テキストノードは除きます)。
var nextSibling = myElement.getNext([match]);
Element.getNextと同じですが、マッチしたすべてのnextSiblingを返します。
Element:getPreviousと同じですが、firstChild (最初の子要素)を探します(テキストノードは除きます)。
var firstElement = myElement.getFirst([match]);
Element:getPreviousと同じですが、lastChild(最後の子要素)を探します。
var lastElement = myElement.getLast([match]);
Element:getPreviousと同じですが、親要素を探します。
var parent = myElement.getParent([match]);
Element:getParentと同じですが、DOMツリーを遡ってすべての親要素を返します。
すべての子要素(テキストノードは除く)を返します。戻り値はElementsです。
var children = myElement.getChildren([match]);
子要素が指定した条件にマッチするかどうか、試します。
var result = myElement.hasChild(el);
<div id="Darth_Vader"> <div id="Luke"></div> </div>
if ($('Darth_Vader').hasChild('Luke')) alert('Luke, I am your father.'); // タン タン タン...
子要素をすべて削除します。
myElement.empty();
<div id="myElement">
<p></p>
<span></span>
</div>
$('myElement').empty();
<div id="myElement"></div>
子要素をすべて削除し、その要素も捨ててしまいます。 ページ更新の前にメモリを空にするのに役立ちます。
myElement.destroy();
子input要素を読み取り、その値からクエリ文字列を生成します。
var query = myElement.toQueryString();
<form id="myForm" action="submit.php"> <input name="email" value="bob@bob.com" /> <input name="zipCode" value="90210" /> </form>
$('myForm').toQueryString(); //戻り値"email=bob@bob.com&zipCode=90210".
select要素の選択されているoptionを返します。
var selected = mySelect.getSelected();
<select id="country-select" name="country"> <option value="US">United States</option <option value ="IT">Italy</option> </select>
$('country-select').getSelected(); //ユーザが選択しているものを返します。
要素の属性を一つ返します。
var myProp = myElement.getProperty(property);
<img id="myImage" src="mootools.png" title="MooTools, the compact JavaScript framework" alt="" />
var imgProps = $('myImage').getProperty('src'); //戻り値: 'mootools.png'.
要素の属性を複数返します。
var myProps = myElement.getProperties(properties);
<img id="myImage" src="mootools.png" title="MooTools, the compact JavaScript framework" alt="" />
var imgProps = $('myImage').getProperties('id', 'src', 'title', 'alt'); //戻り値: { id: 'myImage', src: 'mootools.png', title: 'MooTools, the compact JavaScript framework', alt: '' }
この要素に対し、属性や指定したプロパティをセットします。
<img id="myImage" />
$('myImage').setProperty('src', 'mootools.png');
<img id="myImage" src="mootools.png" />
要素に複数の属性を設定します。
<img id="myImage" />
$('myImage').setProperties({ src: 'whatever.gif', alt: 'whatever dude' });
<img id="myImage" src="whatever.gif" alt="whatever dude" />
要素から属性を削除します。
myElement.removeProperty(property);
<a id="myAnchor" href="#" onmousedown="alert('click');"></a>
//うーん... インラインJavaScriptはよくない! 削除してしまいましょう。 $('myAnchor').removeProperty('onmousedown');
<a id="myAnchor" href="#"></a>
要素から複数の属性を削除します。
myElement.removeProperties(properties);
<a id="myAnchor" href="#" title="hello world"></a>
$('myAnchor').removeProperties('id', 'href', 'title');
<a></a>
要素にリンクしているストレージにアイテムを保存します。
myElement.store(key, value);
$('element').store('someProperty', someValue);
要素のストレージから値を取得します。
myElement.retrieve(key[, default]);
$('element').retrieve('someProperty'); // 戻り値someValue (上の例を参照のこと)
このハッシュにはElement:get、Element:set、Element:eraseで渡される第1引数に対応した関数が入っています。
Element.Properties.disabled = { get: function(){ return this.disabled; } set: function(value){ this.disabled = !!value; this.setAttribute('disabled', !!value); } };
//"disabled"プロパティを取得。 $(element).get('disabled'); //"disabled"プロパティにtrueをセットし、属性にする。 $(element).set('disabled', true);
//setの利用: $(divElement).set({html: '<p>Hello <em>People</em>!</p>', style: 'background:red'}); //new Elementsでの利用(setと同じ働きをします): new Element('input', {type: 'checkbox', checked: true, disabled: true});
myElement.set('html', [htmlString[, htmlString2[, htmlString3[, ..]]]);
<div id="myElement"></div>
$('myElement').set('html', '<div></div>', '<p></p>');
<div id="myElement">
<div></div>
<p></p>
</div>
myElement.get('html');
myElement.set('text', text);
<div id="myElement"></div>
$('myElement').set('text', 'some text'); //myElementのテキストは'some text'になりました。
<div id="myElement">some text</div>
var myText = myElement.get('text');
<div id="myElement">my text</div>
var myText = $('myElement').get('text'); //myText = 'my text'.
var myTag = myElement.get('tag');
<img id="myImage" />
var myTag = $('myImage').get('tag'); // myTag = 'img'.
簡単にインラインフレームを生成し、操作するためのカスタムNativeです。
インラインフレームHTML要素を生成し、そのwindowとdocumentをMooToolsで拡張します。
var myIFrame = new IFrame([el][, props]);
var myIFrame = new IFrame({ src: 'http://mootools.net/', styles: { width: 800, height: 600, border: '1px solid #ccc' }, events: { mouseenter: function(){ alert('Welcome aboard.'); }, mouseleave: function(){ alert('Goodbye!'); }, load: function(){ alert('The iframe has finished loading.'); } } });
ElementsクラスはElementとArrayのメソッドすべてをElements配列に使えるようにします。
var myElements = new Elements(elements[, options]);
$$('p').each(function(el){ el.setStyle('color', 'red'); }); //$$('myselector')はのElementメソッドを継承しているので、 //以下の例は上と同じ効果があります。 $$('p').setStyle('color', 'red');
var myElements = new Elements(['myElementID', $('myElement'), 'myElementID2', document.getElementById('myElementID3')]);
与えられたタグ名によって、要素コレクションをフィルタリングします。Selectorsがインクルードされていれば、CSSセレクターでフィルタリングをできます。 関数でフィルタリングを行うという点で、Array:filterと同じです。
var filteredElements = elements.filter(selector);
このドキュメントはMooToolsのドキュメントを元に高橋文樹が翻訳(ちょっと改変)しました。
本家と同じく、Attribution-NonCommercial-ShareAlike 3.0ライセンスで公表されています。