YUI3:Node


YUIのNode機能はDOMノードの取得,作成,操作を容易にする.各ノードインスタンスはDOMノードを表し、各ノードListは一連のDOMノードを表す.ノードのclassName(myNode.addClass(‘foo’))やスタイル(myNode.setStyle(‘opacity’,0.5))を管理したり、DOM要素(Y.Node.create(‘foo’))を作成したりすることができます.
YUIシードファイルの導入とYUIインスタンスの構成については、YUI 3:YUIグローバルオブジェクトを参照してください.
ノードインスタンスの取得
NodeはYUI 3におけるDOM操作のインタフェースである.Node APIは標準的なDOM APIに基づいており、一般的なDOM操作をより簡単にし、実装コードもより簡潔にするための便利な属性と方法を提供しています.標準的なDOM APIに詳しい開発者は、Nodeインスタンスがよく知られていることを発見します.
ノードインスタンスを取得する最も簡単な方法はYUIインスタンスの「one」メソッドを使用することである.Y.oneメソッドは、ページ上のDOM要素をパラメータとして受信し、「選択文字列」もパラメータとして受信します.パラメータとして「文字列の選択」を使用すると、「文字列が一致する最初の要素の選択」が得られます.
注意:デフォルトではCSS 3セレクタのサポートは含まれていません.CSS 3セレクタのサポートを得るには、「selector-css 3」モジュールを導入する必要があります.
次のコードは、ノードインスタンスを取得する2つの方法を示します.
 
YUI().use('node', function(Y) {
    var node1 = Y.one('#main');
    var node2 = Y.one(document.body);
});
 
 
ノード機能の使用
以下ではYUIのノード共機能の使い方を詳しく説明します.次のセクションがあります.
  • ノードインスタンスにアクセスするプロパティ
  • DOMイベント
  • DOM方法
  • Node List(ノードセット)
  • Node Queries(ノードクエリ)
  • ノードインスタンスのプロパティへのアクセス
    ノードインスタンス内のDOMノードのプロパティは、Y.ノードインスタンスのsetメソッドとgetメソッドでアクセスできます.単純なタイプのプロパティ(string、number、boolean)は、ノードインスタンスを直接転送/エクスポートするDOMノードであり、元のDOMノードを返すプロパティはY.ノードインスタンスを返します.
    次に、異なるプロパティへのアクセスの例を示します.
     
    YUI().use('node', function(Y) {
        var node = Y.one('#foo');
        var parent = node.get('parentNode'); // Node instance
    
        var html = 'I am "' + node.get('id') + '".';
        html += 'My parent is "' + parent.get('id') + '"';
    
        node.set('innerHTML', html);
    });
    
     
     
    DOMイベント
    onメソッドを使用して、Nodeインスタンスにイベントリスナーを追加します.リスニング関数の最初のパラメータによって入力されるイベントオブジェクトはevent facadeであり、このevent facadeはNode APIと同様にブラウザの違いを統一化し、W 3 C標準に基づく標準APIを提供し、DOMイベントと連携して動作する.DOMノードを元に戻したイベントオブジェクト属性はY.Nodeインスタンスを返します.
     
    YUI().use('node', function(Y) {
        Y.one('#demo').on('click', function(e) {
            e.preventDefault();
            alert('event: ' + e.type + ' target: ' + e.target.get('tagName'));
        });
    });
    
     
     
    DOMメソッド
    Y.Node APIは、あなたが考えることができるすべてのDOMメソッドを提供し、一般的な操作を実行するための追加の方法も提供しています.上記の属性およびイベントと同様に、DOMノードを元に戻す方法はY.Nodeインスタンスを返します.
    NodeListの使用
    Y.NodeListは、Nodeと同様に複数のノードを操作する単一のインタフェースを提供する.NodeList APIは、ノードAPIの簡略化されたバージョンであり、一般的な操作を一括で実行できます.
    Y.allメソッドはNodeListを取得する最も簡単なメソッドである.
     
    YUI().use('node', function(Y) {
        Y.all('#demo li').addClass('bar');
    });
    
     
     
    Node Queries
    セレクタクエリは、ノードをテストする強力な操作です.すべてのY.Nodeインスタンスでは、one、all、testメソッドがサポートされています.
    YUI().use('node', function(Y) {
        var node = Y.one('#demo');
    
        var node2 = node.one('p');
        if (node2) { // might be null
            node2.addClass('bar'); // adds "bar" to the first paragraph descendant of #demo
        }
    
        node.all('p').addClass('bar'); // adds "bar" to all paragraph descendants of #demo
    
        if (node.test('.foo.bar')) { // "if node has both foo and bar classNames"
            node.removeClass('bar');
        }
    });
    セレクタクエリーの詳細については、W 3 C仕様を参照してください.
  • CSS Level 3 Selectors
  • Selectors API

  • 注意:デフォルトではCSS 3セレクタのサポートは含まれていません.CSS 3セレクタのサポートを得るには、「selector-css 3」モジュールを導入する必要があります.
    ARIAサポート
    ノードインタフェースはARIAでサポートされています.ノードに組み込まれたCSSセレクタクエリとともに使用すると、ノードインスタンスのroles、states、propertiesを適用、管理しやすくなります.
    ARIA Roles,States,PropertiesはHTMLの意味を高めた.開発者がページのあるプレートの目的をより正確に記述したり、DHTML widgetがscreen readerなどの補助ツールを必要とするユーザーの使用体験を向上させたりすることができます.
    ARIA Roles,States,Propertiesをset法で適用した.たとえば,idがtoolbarの
    のroleを「toolbar」に設定する.
    YUI().use('node', function(Y) {
        var node = Y.one('#toolbar').set('role', 'toolbar');
    });
    
     
    ノードに内蔵されたCSSセレクタクエリーサポート、チェーンメソッド、1つのノードインスタンスに複数のプロパティを設定する機能により、ツリーサブディレクトリが複数あるDHTML widgetを作成する際に、ARIA Roles、States、Propertiesを簡単に適用できます.たとえば、menubar widgetを作成するには、menubarを表すルートDOM要素に「menubar」ロールを指定し、「menu」ロールを「menu」(メニュー)を表すルートDOM要素に指定する必要があります.次に、メニュー項目はデフォルトで非表示であるため、各メニューはaria-hiddenのステータスを指定する必要があります.Nodeインタフェースでは、上記の操作を1行のコードで完了させます.
    YUI().use('node', function(Y) {
    	Y.one('#rootmenu').set('role', 'menubar').all('.menu').setAttrs({ role: 'menu', 'aria-hidden': true });
    });
    
     
    機能移行テーブル
    NodeにはYAHOOがあります.util.Domのほとんどの機能.
    注:myノードは、次のサンプルコードでノードのインスタンスです.以前にDOMノードを返す方法はここでノードインスタンスを返す.
    2.x (via YAHOO.util.Dom) 3.0
    addClass
    myNode.addClass
    batch
    NodeList[methodName], NodeList.each, or Y.each
    generateId
    Y.guid
    get
    Y.one Note strings are now treated as selectors (e.g. “Y.one(‘#foo’)” vs. “YAHOO.util.Dom.get(‘foo’)”)
    getAncestorBy
    myNode.ancestor
    getAncestorByClassName
    myNode.ancestor
    getAncestorByTagName
    myNode.ancestor
    getChildren
    myNode.get(‘children’)
    getChildrenBy
    myNode.all
    getClientRegion
    myNode.get(‘viewportRegion’)
    getDocumentHeight
    myNode.get(‘docHeight’)
    getDocumentScrollLeft
    myNode.get(‘docScrollX’)
    getDocumentScrollTop
    myNode.get(‘docscrollY’)
    getDocumentWidth
    myNode.get(‘docWidth’)
    getElementsBy
    myNode.all
    getElementsByClassName
    myNode.all
    getFirstChild
    myNode.one
    getFirstChildBy
    myNode.one
    getLastChild
    myNode.one
    getLastChildBy
    myNode.one
    getNextSibling
    myNode.next
    getNextSiblingBy
    myNode.next
    getPreviousSibling
    myNode.previous
    getPreviousSiblingBy
    myNode.previous
    getRegion
    myNode.get(‘region’)
    getStyle
    myNode.getStyle
    getViewportHeight
    myNode.get(‘winHeight’)
    getViewportWidth
    myNode.get(‘winWidth’)
    getX
    myNode.getXY
    getY
    myNode.getXY
    getXY
    myNode.getXY
    hasClass
    myNode.hasClass
    inDocument
    myNode.inDoc
    insertAfter
    myNode.insert
    insertBefore
    myNode.insert
    isAncestor
    myNode.contains (Note myNode.contains(myNode) === true)
    removeClass
    myNode.removeClass
    replaceClass
    myNode.replaceClass
    setStyle
    myNode.setStyle
    setX
    myNode.setXY
    setY
    myNode.setXY
    setXY
    myNode.setXY