月別アーカイブ: 2016年8月

プラグインのファイル分割

前回に引き続きプラグインに関してです。
この Blog では見やすさを優先するため File を分けることは余り無いと思います。
まぁ、とりあえずは今回のみかもしれませんが調べてみたいと思います。

■ HTML File

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        <script src="//code.jquery.com/jquery-3.1.0.min.js"></script>
        <script src="./jquery.sample1663.js"></script>

        <script type="text/javascript"><!--

            $(function(){

                $('#click_btn1').sumpleFunction({
                    disp_id    : 'disp_div',
                    input_id   : 'input_text',
                    question   : 'to continue ?',
                });

                $('#click_btn2').sumpleFunction({
                    disp_id    : 'disp_div',
                    question   : 'clear?',
                });

            });

        --></script>

        <link rel="stylesheet" href="reset.css" type="text/css">
        <style type="text/css"><!--

            div {
                margin           : 10px;
            }

            div#disp_area {
                border           : 1px #000000 solid;
            }

        --></style>

    </head>
    <body>

        <div id="main_area">
            <input type="text" id="input_text" value="Please enter a message.">
            <button id="click_btn1">Input Disp Text</button>
            <button id="click_btn2">Clear Disp Text</button>
        </div>

        <div id="disp_area">
            <div id="disp_div"></div>
        </div>

    </body>
</html>

■ Plugin File【jquery.sample1663.js】

(function($){

    $.fn.sumpleFunction = function ( option ) {

        this.click( function( eObj ) {

            // Set Init
            var defInit = {
                disp_id  : '',
                input_id : '',
                question : 'continue the process ?',
                message  : '',
            };
            var setInit = $.extend( defInit, option );

            // Confirm Check
            if ( !confirm( setInit.question ) ) {
                eObj.preventDefault();
                return this;
            }

            // Message Set
            if ( setInit.input_id.length  ) {
                setInit.message = $('#' + setInit.input_id).val();
            }

            // Message Disp
            $('#' + setInit.disp_id).html( setInit.message );

            return this;

        });

    };

}(jQuery));

sample

sample の「Input Disp Text」を Click すると処理を進めるかの Dialog が出ます。
「Ok」を押すことで Text に入力された内容が表示されます。
Plugin の処理を利用して Crear の処理も作成してあります(笑)
Plugin の処理を流用すると中々便利にはなりそうですね。

ちなみに Click と Plugin の発動をどのようにすれば良いか悩んでいました、
とりあえず今回のような処理方法で良いのかなぁ。

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

プラグインの作成基礎

今回は Plugin の作成の基礎です。
最初は Blig の題材として、無名関数などの調べて見ようかと思っていたんですが
いろいろ調べていると、jQuery ではプラグイン作成をすることが多いようです。

折角なんで Plugin の基礎部分を確認してみました。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        <script src="//code.jquery.com/jquery-3.1.0.min.js"></script>

        <script type="text/javascript"><!--

            (function($){

                $.fn.sumpleFunction = function ( option ) {

                    var defInit = {
                        text: 'Default Messeage'
                    };

                    var setMessage = $.extend( defInit, option );
                    $('#disp_div').html( setMessage.text );

                    return(this);

                };

            }(jQuery));

            $(function(){

                $('#click_btn1').click( function () {
                    var setText = $('#set_text').val();
                    $('#click_btn1').sumpleFunction({
                        text: setText
                    });
                });

                $('#click_btn2').click( function () {
                    $('#click_btn2').sumpleFunction({});
                });

            });

        --></script>

        <link rel="stylesheet" href="reset.css" type="text/css">
        <style type="text/css"><!--

            div {
                margin           : 10px;
            }

        --></style>

    </head>
    <body>

        <div id="main_area">
            <input type="text" id="set_text" value="Input Text">
            <button id="click_btn1">Disp Input Text</button>
            <button id="click_btn2">Disp Default Text</button>
        </div>

        <div id="disp_area">
            <div id="disp_div"></div>
        </div>

    </body>
</html>

sample

sample に Button が 2個あります。
「Disp Input Text」を Click すると Text に入力された文字列が、
「Disp Default Text」を Click するとこちらで設定した内容が、
それぞれ表示される形になります。

今までは同じような処理をする場合、1つのファイルにまとめてはいるものの
Plugin の作成はしていなかったのですが、今後はまとめても良いかも・・・

なお、本来なら Plugin に関しては別ファイルに切り分けるのですが、
今回は1つのファイルにて作業しています。

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

外部スクリプトファイルの読み込み

今回は getScript です。
外部に Script をまとめて置きした、任意の状態の場合に読み込みを行う為によく使用します。

callback に対応していたりと意外と便利なのですが、レスポンシブ対応が増えたことにより
使用する機会が無くなりました。
それに伴い、当 Blog に記載する機会は余りないかなと思っていました。

しかし、既存サイトの改修を行う際に、Javascript で HTML の大きな切り替えが有りました。
その際に click に対して on を設定し直さないと正常に処理が続行できない問題が発生しました。

新規案件であれば考慮して作成するのですが「既存サイトの場合は基本的に現状維持」がモットーの為、
その処理が発生した場合に場合にのみ外部の Script を読み直すことにしました(笑)
折角なので備忘録的にも記載しておこうかと思います。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        <script src="//code.jquery.com/jquery-3.1.0.min.js"></script>

        <script type="text/javascript"><!--

            $(function(){

                $('#main_select').change( function() {

                    selectVal = $(this).val();
                    switch ( selectVal ) { 
                        case '1':
                            $.getScript("./sample_1645_script1.js");
                            break;
                        case '2':
                            $.getScript("./sample_1645_script2.js");
                            break;
                    }

                });

            });


        --></script>

        <link rel="stylesheet" href="reset.css" type="text/css">
        <style type="text/css"><!--

            div {
                margin           : 10px;
            }

        --></style>

    </head>
    <body>

        <div id="main_area">
            <select id="main_select">
                <option >No Select</option>
                <option value="1">Run Sample1</option>
                <option value="2">Run Sample2</option>
            </select>
        </div>

    </body>
</html>

■「Run Sample1」で実行するJavascript

alert('sample1.js');

■「Run Sample2」で実行するJavascript

alert('sample2.js');

sample

sample の Select を変更すると、指定した外部の Script を実行します。

今回のサンプルでは「だから何・・・」といった状況なのですが、特定のタイミングの時に
だいぶスクリプトを読みたい時に便利です。
 #例えば API の Callback にて処理したい場合など

折角なので今後も色々な所で使って行きたいと思います。

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

セレクトボックスの表示内容

今回も備忘録的な内容です。
よくある処理ではありますが、select の操作した処理を取得する処理です。

普通の場合には「$(‘#main_selectoption:selected’)」と云う形で処理を
とるのですが、今回は他との兼ね合いによって $(this) を基本として
処理をありました、いつも通りの作業を使用としましたが・・・

・・・あれ、「$(this)」で括っているためその続きが書けません。
そのため、いつもの方法意外で対応する必要があるのかと思います。
今回はのための方法です。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        <script src="//code.jquery.com/jquery-3.1.0.min.js"></script>

        <script type="text/javascript"><!--

            $(function(){

                $('#main_select').click( function() {

                    $objO = $('#main_select option:selected');
                    $('#o_txt').html( $objO.html() );
                    $('#o_val').html( $objO.val() );

                    $objC = $(this).children(':selected');
                    $('#c_txt').html( $objC.html() );
                    $('#c_val').html( $objC.val() );

                });

            });


        --></script>

        <link rel="stylesheet" href="reset.css" type="text/css">
        <style type="text/css"><!--

            div {
                margin           : 10px;
            }
            th, td {
                min-width        : 100px;
            }

        --></style>

    </head>
    <body>

        <div id="button_area">
            <select id="main_select">
                <option value="1">TextA</option>
                <option value="2">TextB</option>
                <option value="3">TextC</option>
                <option value="4">TextD</option>
                <option value="5">TextE</option>
            </select>
        </div>

        <div id="main_area">
            <table id="disp_text">
                <tr>
                    <th rowspan="2">$('#main_select option:selected')</th>
                    <th>text</th><td id="o_txt"></td>
                </tr>
                <tr>
                    <th>value</th><td id="o_val"></td>
                </tr>
                <tr>
                    <th rowspan="2">$('this').children(':selected')</th>
                    <th>text</th><td id="c_txt"></td>
                </tr>
                <tr>
                    <th>value</th><td id="c_val"></td>
                </tr>
            </table>
        </div>

    </body>
</html>

sample

sample で Select を変すると選択した内容の Text と Value が表示されます。
今回は、取得の方法が異なるため2種類の Text と Value を表示しています。

この方法で今回は無事に値が取れましたが忘れるといけないので記録しておきます。

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。