スポンサー
Support Framework7

Dom7 - カスタムDOMライブラリ

    Framework7は、DOM操作のためにも、サードパーティのライブラリを使用しません。独自のカスタムDOM7 - DOMライブラリがあり、DOM操作のための最先端かつ高性能な方法を利用しています。新しいことを学ぶ必要はありません。よく知られているjQueryライブラリと同じ構文を持ち、最も人気があり広く使われているメソッドとjQueryのような連鎖をサポートしているので、使い方はとても簡単です。

    使い始めるには、グローバルウィンドウ関数として Dom7 が用意されていますが、jQuery や Zepto などの他のライブラリとの競合を避けるために、$$ のような便利な名前のローカル変数に割り当てることをお勧めします。

    //DOM7をローカル変数にエクスポートしてアクセスしやすくする
    var $$ = Dom7;

    使用例

    既にご存知の通りです。

    $$('.something').on('click', function (e) {
        $$(this).addClass('hello').attr('title', 'world').insertAfter('.something-else');
    });

    利用可能なメソッド

    これらのメソッドは、jQueryやZeptoとほぼ同じ方法で、同じ引数を使って動作します。

    $$(window).trigger('resize');
    Classes
    .addClass(className)要素へのクラスの追加
    //全ての段落に "intro "クラスを追加する
    $$('p').addClass('intro');
    .removeClass(className)指定したクラスの削除
    //big "クラスを持つすべてのリンクから "big "クラスを削除する
    $$('a.big').removeClass('big');
    .hasClass(className)マッチした要素の中に、指定されたクラスが割り当てられているかどうかを判断します。
    <p class="intro">Lorem ipsum...</p>
    $$('p').hasClass('intro'); //-> true
    .toggleClass(className)マッチした要素のセット内の各要素から 1 つ以上のクラスを削除(クラスが存在する場合)または追加(存在しない場合)します。
    <!-- 前 -->
    <h1 class="small">This is first title</h1>
    <h2>This is subtitle</h2>
    $$('h1, h2').toggleClass('small');
    <!-- 後 -->
    <h1>This is first title</h1>
    <h2 class="small">This is subtitle</h2>
    Attributes and properties
    .prop(propName)プロパティの値を取得する。
    var isChecked = $$('input').prop('checked');
    .prop(propName, propValue)単一のプロパティ値を設定する。
    //すべてのチェックボックスをチェックする
    $$('input[type="checkbox"]').prop('checked', true);
    .prop(propertiesObject)複数のプロパティを設定します。
    $$('input').prop({
      checked: false,
      disabled: true
    })
    .attr(attrName)属性値の取得
    <a href="http://google.com">Google</a>
    var link = $$('a').attr('href'); //-> http://google.com
    .attr(attrName, attrValue)単一の属性値を設定
    //すべてのリンクをgoogleに設定する
    $$('a').attr('href', 'http://google.com');
    .attr(attributesObject)複数の属性を設定する
    $$('a').attr({
      id: 'new-id',
      title: 'Link to Google',
      href: 'http://google.com'
    })
    .removeAttr(attrName)指定された属性を削除します。
    //すべての画像から "src "属性を削除する
    $$('img').removeAttr('src');
    .val()一致した要素のうち最初の要素の現在の値を取得する
    <input id="myInput" type="text" value="Lorem ipsum"/>
    var inputVal = $$('#myInput').val(); //-> 'Lorem ipsum'
    .val(newValue)一致したすべての要素の値を設定する
    $$('input#myInput').val('New value here');
    Data storage
    .data(key, value)一致した要素に関連する任意のデータを格納する
    $$('a').data('user', {
        id: '123',
        name: 'John',
        email: 'john@doe.com'
    });
    .data(key)data(key, value) または HTML5 の data-* 属性で設定された、コレクション内の最初の要素の指定されたデータストアの値を返す
    var user = $$('a').data('user');
    //-> {id: '123', name: 'John', email: 'john@doe.com'}。

    または

    <p data-id="123">Lorem ipsum...</p>
    var id = $$('p').data('id'); //-> 123
    .removeData(key)指定されたデータの削除
    $$('a').removeData('user')
    Data Set
    .dataset()要素のデータセット(data-属性の集合)をプレーン・オブジェクトとして返す。
    <div id="my-div" data-loop="true" data-animate-pages="false" data-index="0" data-hello="world">
        ...
    </div>
    var dataset = $$('#my-div').dataset();
    /*
    dataset will contain plain object with camelCase keys and with formatted boolean and number types:
    {
        loop: true,
        animatePages: false,
        index: 0,
        hello: 'world'
    }
    */
    CSS transform, transitions
    .transform(CSSTransformString)接頭辞付きの CSS transform プロパティを追加します。
    $$('a').transform('rotate(90deg)')
    .transition(transitionDuration)コレクションに CSS transition-duration プロパティを設定する。
    $$('p').transition(300)
    Events
    .on(eventName, handler, useCapture)選択された要素に対する1つまたは複数のイベントにイベントハンドラ関数を追加する。
    $$('a').on('click', function (e) {
      console.log('clicked');
    });
    $$('input[type="text"]').on('keyup keydown change', function (e) {
      console.log('input value changed');
    });
    .on(eventName, delegatedTarget, handler, useCapture)ライブ/委譲イベントハンドラ
    $$(document).on('click', 'a', function (e) {
      console.log('link clicked');
    });
    .once(eventName, handler, useCapture)選択された要素への1つ以上のイベントに、一度だけ実行されるイベントハンドラ関数を追加する
    $$('a').once('click', function (e) {
      console.log('clicked');
    });
    $$('input[type="text"]').once('keyup keydown change', function (e) {
      console.log('input value changed');
    });
    .once(eventName, delegatedTarget, handler, useCapture)一度だけ実行されるライブ/委譲されたイベントハンドラー
    $$(document).once('click', 'a', function (e) {
      console.log('link clicked');
    });
    .off(eventName, handler, useCapture)イベントハンドラの削除
    function clickHandler(){
        console.log('clicked');
    }
    // イベント・リスナーの追加
    $$('a').on('click', clickHandler);
    // イベント・リスナーの削除
    $$('a').off('click', clickHandler);
    
    .off(eventName, delegatedTarget, handler, useCapture)ライブ/委譲されたイベントハンドラの削除
    function clickHandler(){
        console.log('clicked');
    }
    // イベントリスナーの追加
    $$(document).on('click', 'a', clickHandler);
    // イベント・リスナーの削除
    $$(document).off('click', 'a', clickHandler);
    .trigger(eventName, eventData)指定されたイベントに対して、マッチした要素に追加されたすべてのハンドラを実行する
    .transitionEnd(callback, permanent)コレクションに接頭辞付き transitionEnd イベントハンドラを追加します。
    $$('a').transitionEnd(function(){ /* do something */ })
    .animationEnd(callback)接頭辞付き animationEnd イベントハンドラーをコレクションに追加します。
    $$('a').animationEnd(function(){ /* do something */ })
    Styles
    .width()一致した要素のセット内の最初の要素の現在の計算された幅を取得する
    var boxWidth = $$('div#box').width();
    .outerWidth([includeMargin])一致した要素のセットの中の最初の要素の現在の計算された幅を取得する (パディングとボーダーとマージンを含む) (includeMargin が true の場合)
    var outerWidth = $$('div#box').outerWidth(true);
    .height()一致した要素の集合の中の最初の要素について,現在計算されている高さを得る。
    var boxHeight = $$('div#box').height();
    .outerHeight([includeMargin])一致した要素のセットの中の最初の要素の現在の計算された高さを取得する(パディングとボーダーとマージンを含む)(includeMarginがtrueの場合
    var outerHeight = $$('div#box').outerHeight(true);
    .offset()ドキュメントに対する最初の要素の現在の座標を取得する。
    var coords = $$('.content').offset(); //-> {top: 100, left: 200}
    var top = coords.top; //-> 100
    var left = coords.left; //-> 200
    .hide()一致した要素に「display:none」を設定する
    //すべての段落を隠す
    $$('p').hide();
    .show()一致した要素に「display:block」を設定する
    //すべての段落を表示する
    $$('p').show();
    .css(property)最初の要素に対する指定された CSS 特性の値を取得する。
    $$('.content').css('left'); //-> 200px
    .css(property, value)指定された CSS 特性を,一致する要素に設定する。
    $$('.content').css('left', '100px');
    .css(propertiesObject)一致した要素に複数の CSS 特性を設定する。
    $$('a').css({
        left: '100px',
        top: '200px',
        color: 'red',
        width: '300px',
        marginLeft: '17px',
        'padding-right': '20px'
    });
    Scroll
    .scrollTop()要素の scrollTop 位置の取得
    .scrollTop(position, duration, callback)スクロールトップの位置をアニメーションで設定する。duration が指定されていない場合は、スクロールトップの位置は直ちに設定される。コールバック関数を指定した場合は、スクロールが完了した後に実行されます。
    .scrollLeft()要素のscrollLeft位置の取得
    .scrollLeft(position, duration, callback)duration"(ms)の間、scrollLeftの位置をアニメーションで設定します。durationが指定されていない場合は、直ちにスクロール左位置が設定されます。コールバック関数を指定した場合は、スクロール完了後に実行されます。
    .scrollTo(left, top, duration, callback)duration"(ms)の間、左スクロールと上スクロールをアニメーションで設定します。durationが指定されていない場合は、直ちにスクロール位置が設定されます。callback "関数を指定した場合は、スクロールが完了した後に実行されます。
    Dom Manipulation
    .add(elements)一致した要素のセットに追加された要素を持つ、新しい Dom7 コレクションを作成します。
    var links = $$('a');
    var divs = $$('div');
    links.add('p').addClass('blue');
    links.add(divs).addClass('red');
    
    .each(callback)コレクションを反復処理し、マッチした要素ごとにコールバック関数を実行する
    .html()一致した要素のセット内の最初の要素の HTML コンテンツを取得する
    .html(newInnerHTML)一致したすべての要素の HTML コンテンツを設定する
    .text()一致した要素のセット内の最初の要素のテキスト コンテンツの取得
    .text(newTextContent)一致した各要素のテキストコンテンツを設定
    .is(CSSSelector)現在マッチしている要素のセットを CSS セレクタと照合する
    .is(HTMLElement)一致した要素のセットを HTML 要素または Dom7 コレクションと照合する
    .index()Dom7 コレクション内の最初の要素の位置を、その兄弟要素と比較して返す
    .eq(index)一致した要素のセットを、指定されたインデックスのものに減らす
    .append(HTMLString)一致した要素の集合の各要素の末尾に、パラメータで指定されたコンテンツを挿入する
    .append(HTMLElement)マッチした要素の集合の中の要素の最後に,指定した HTML 要素を挿入する
    .appendTo(HTMLElement)パラメーターで指定された要素の最後にコンテンツ/要素を挿入する
    .prepend(newHTML)一致した要素の各要素の先頭に,パラメータで指定されたコンテンツを挿入する
    .prepend(HTMLElement)指定された HTML 要素を,マッチした要素群の要素の先頭に挿入する
    .prependTo(HTMLElement)パラメータで指定された要素の先頭に,コンテンツ/要素を挿入する
    .insertBefore(target)一致した要素群の各要素をターゲットの前に挿入します。対象となるのは、CSS セレクタ、HTML 要素、Dom7 コレクションのいずれかである。
    .insertAfter(target)ターゲットの後に、マッチした要素のセット内のすべての要素を挿入する。対象は、CSS セレクタ、HTML 要素、Dom7 コレクションのいずれかである。
    .next([selector])一致した要素の集合内の各要素の直後の兄弟を取得する。セレクタが指定されている場合は、そのセレクタにマッチする場合にのみ次の兄弟を取得します。
    .nextAll([selector])一致した要素のセットに含まれる各要素の次の兄弟をすべて取得します。
    .prev([selector])マッチした要素のセット内の各要素の直前の兄弟を取得(オプションでセレクタによるフィルタリングが可能)。
    .prevAll([selector])一致した要素の集合の中の各要素の直前の兄弟をすべて取得する(オプションでセレクタによるフィルタリングあり
    .siblings([selector])一致した要素の集合に含まれる各要素の兄弟姉妹を取得(オプションでセレクタによるフィルタリングが可能)。
    .parent([selector])マッチした要素の現在のセット内の各要素の最初の親を取得(オプションでセレクタによるフィルタリングあり
    .parents([selector])マッチした要素の現在のセット内の各要素の先祖を取得(オプションでセレクタによるフィルタリングが可能
    .closest([selector])セット内の各要素について、その要素自体をテストし、DOM ツリー内の先祖を辿ることで、セレクタにマッチする最初の要素を取得する。
    .find(selector)一致した要素の現在のセットの中で、セレクタでフィルタリングされた各要素の子孫を取得する。
    .children(selector)一致した要素のセット内の各要素の子を取得(オプションでセレクタによるフィルタリングあり
    .filter(callback)要素のコレクションのフィルタリング
    var redLinks = $$('a').filter(function(el, index) {
        return $$(this).hasClass('red');
    })
    
    .remove()一致した要素をドムから削除/切り離す
    .empty()一致した要素のセットのすべての子ノードを DOM から削除します。.html('')`のエイリアス
    Shortcuts
    .click()コレクションの "click "イベントをトリガーする
    .click(handler)コレクションに "click "イベントハンドラを追加します。
    .blur()コレクションで "blur" イベントをトリガ
    .blur(handler)コレクションに "blur" イベント ハンドラを追加する
    .focus()コレクションの "focus "イベントをトリガーする
    .focus(handler)コレクションに "focus "イベントハンドラーを追加する
    .focusin()コレクション上で "focusin "イベントをトリガーする
    .focusin(handler)コレクションに "focusin "イベントハンドラーを追加する
    .focusout()コレクション上で "focusout "イベントをトリガーする
    .focusout(handler)コレクションに "focusout "イベントハンドラーを追加
    .keyup()コレクションの "keyup "イベントをトリガーする
    .keyup(handler)コレクションに "keyup "イベントハンドラーを追加
    .keydown()コレクションでの "keydown "イベントのトリガー
    .keydown(handler)コレクションに "keydown "イベントハンドラーを追加
    .keypress()コレクション上で "keypress "イベントをトリガーする
    .keypress(handler)コレクションに "keypress "イベントハンドラーを追加する
    .submit()コレクションの "submit "イベントをトリガーする
    .submit(handler)コレクションに "submit "イベントハンドラーを追加
    .change()コレクションの "change "イベントをトリガーする
    .change(handler)コレクションに "change "イベントハンドラーを追加する
    .mousedown()コレクションの "mousedown "イベントをトリガーする
    .mousedown(handler)コレクションに "mousedown "イベントハンドラーを追加する
    .mousemove()コレクションの "mousemove "イベントをトリガーする
    .mousemove(handler)コレクションに "mousemove "イベントハンドラーを追加する
    .mouseup()コレクション上で "mouseup "イベントをトリガーする
    .mouseup(handler)コレクションに "mouseup "イベントハンドラーを追加する
    .mouseenter()コレクション上での "mouseenter "イベントのトリガー
    .mouseenter(handler)コレクションに "mouseenter "イベントハンドラーを追加する
    .mouseleave()コレクション上で "mouseleave "イベントをトリガーする
    .mouseleave(handler)コレクションに "mouseleave" イベント ハンドラを追加する
    .mouseout()コレクション上で "mouseout "イベントをトリガーする
    .mouseout(handler)コレクションに "mouseout "イベントハンドラーを追加する
    .mouseover()コレクション上で "mouseover "イベントをトリガーする
    .mouseover(handler)コレクションに "mouseover "イベントハンドラーを追加する
    .touchstart()コレクション上で "touchstart "イベントをトリガーする
    .touchstart(handler)コレクションに "touchstart "イベントハンドラーを追加
    .touchend()コレクション上で "touchend "イベントをトリガーする
    .touchend(handler)コレクションに "touchend "イベントハンドラーを追加する
    .touchmove()コレクション上で "touchmove "イベントをトリガーする
    .touchmove(handler)コレクションに "touchmove "イベントハンドラーを追加する
    .resize(handler)コレクションに "resize "イベントハンドラーを追加
    .scroll(handler)コレクションに "scroll "イベントハンドラーを追加

    アニメーション

    .animate(properties, parameters)- Perform a custom animation of a set of CSS properties

    • properties - object - アニメーションさせるCSSプロパティ
    • parameters - object - アニメーションのパラメータ

    Dom7コレクションを返す

    $$('#animate-me').animate(
        /* CSS properties to animate, e.g.: */
        {
            'margin-left': 100,
            'width': 200,
            'height': 300,
            'opacity': 0.5
        },
        /* Animation parameters */
        {
            // アニメーションの長さ(ms)、オプション(デフォルトは300
            duration: 300,
            // アニメーションのイージング、オプション(デフォルトは'swing')、'linear'も可能
            easing: 'swing',
            /* Callbacks */
            // アニメーションの開始(オプション
            begin: function (elements) {
                console.log('animation began');
            },
            // アニメーションの完了(オプション
            complete: function (elements) {
                console.log('animation completed');
            },
            // 進行中のアニメーション(オプション
            progress: function (elements, complete, remaining, start) {
                /* Where
                complete - The call's completion percentage (as a decimal value)
                remaining - How much time remains until the call completes (in ms)
                start - The absolute time at which the call began (in ms)
                */
                console.log('animation in progress');
            }
        }
    );

    また、チェイニングキューもサポートしています。

    $$('#animate-me')
        .animate(
            {
                'margin-left': 100,
                'width': 200,
                'height': 300,
                'opacity': 0.5
            }
        )
        .animate(
            {
                'width': 50,
                'height': 50
            }
        );