ラベル jQuery の投稿を表示しています。 すべての投稿を表示
ラベル jQuery の投稿を表示しています。 すべての投稿を表示

2014年10月5日日曜日

[jQuery]first-of-typeセレクタ

バージョン1.9から追加されたセレクタ。

親要素内で、セレクタで指定した要素が最初に出現する要素が選択される。

この例だと、div要素内で最初に出現するspanタグが選択される。
(hogeとあいうえおのspanタグ)
<div>
  <span>hgoe</span>
  <span>fuga</span>
</div>
<div>
  <span>あいうえお</span>
  <span>かきくけこ</span>
  <span>さしすせそ</span>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
  $("span:first-of-type").css({
    color: 'red'
  });

</script>

表示結果

選択された最初のspanタグにスタイルが設定されているのがわかる。

※first-of-typeと逆のlast-of-typeセレクタもある。

2012年12月21日金曜日

html5のrequired属性の背景色を変更

html5のクライアントバリデーションの必須属性(required属性)の背景色をjqueryを使用して変更する方法。

  (function ($) {
    $('input:required').each(function() {
      var $this = $(this);
      // 初期表示時の色設定
      changeColor($this);

      // チェンジイベントをトリガーとする色設定
      $this.change(function() {
        changeColor($this);
      });

      function changeColor(element) {
        var backgroundColor;
        if (element.val()) {
          // 値がある場合は背景色を白に
          backgroundColor = 'white';
        } else {
          // 値がない場合は背景色をピンクに
          backgroundColor = 'pink';
        }
        element.css({backgroundColor: backgroundColor});
      }
    });
  })(jQuery);

2012年3月10日土曜日

[jQuery]拡張して関数を追加する方法

jQueryを拡張する方法。

拡張方法としては、jQueryのオブジェクトに関数を追加してあげるだけ。

jQueryオブジェクトが「$」となっているので、「$.関数名 = function(引数)」として定義してあげる。

(function ($) {
    $.showMessage = function(msg) {
        alert(msg);
    };

    console.log($.showMessage("メッセージ"));
})(jQuery);

2012年3月8日木曜日

[jQuery]grep関数

jQueryのgrep関数を使って、配列の内容にフィルタかけてみたメモ。

grep関数の仕様

grep(array,callback,invert)

array    -> grepをかけたい配列オブジェクト
callback -> フィルタ条件をもつ関数オブジェクト。戻り値でbooleanを返したげる。
invert   -> これをtrueにしてあげると、callback関数の条件を逆にできる。(falseのものだけをフィルタする場合は、trueにするイメージ)

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    (function ($) {
        // 5以下の要素のみを抽出
        var filter = $.grep(arr, function (value) {
            return value <= 5;
        });

        // 3つめのパラメータがtrueなので、6以上の要素のみが抽出される。
        var filter = $.grep(arr, function (value) {
            return value <= 5;
        }, true);

        // 以下のように正規表現も使えます。
        var ret = $.grep(["100", "200", "300"], function (value) {
            return value.match(/[12]00/);
        });
    })(jQuery);

2012年3月4日日曜日

jQueryを使うときは$の競合に気をつける

jQueryを使うときは、jQueryの別名参照の「$」を使用するけど、これの競合に注意しないといけないらしい。

例えば、こんなコードの用に「$」が既に定義されていた場合、$('body')はjQueryの呼び出しではなく、文字列変数の「$」を参照しているだけなので実行時にエラーになってしまう。(普通はこんなコードはないけど)

エラーの内容
Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function

この競合を解決するために、jQueryを使うときは「$」を直接使うのではなく無名関数でwrapして使ってあげるのが一般的らしい。無名関数を使った場合は、こんな感じになるようだ。
これは、無名関数で引数を1つ(この場合は「$」)受け取っている。その引数には、最後のjQueryオブジェクトを渡してあげる。
あんまり理解出来なかったが、無名関数全体を括弧で囲んであげて、最後の「(jQuery)」部分でjQueryオブジェクトを引数に指定してあげてるようだ。

2012年2月25日土曜日

[jQuery]fadeOutとfadeIn

fadeOutは対象の要素を隠してくれて、fadeInは表示してくれる。


fadeOutとfadeInの引数

1.speed
  速度を指定する。数値(ミリ秒)を指定した場合は、そのスピードで表示、非表示になります。
  文字列を指定した場合は、以下のどうさになります。ざっくり指定するにはこれですね。

  slow:ゆっくりと
  normal:普通
  fast:早く

  *この値を省略した場合は、「normal」な動作となります。
2.callback
  表示、非表示が完了したタイミングでコールバックされる関数。任意指定だから特に指定しなくても大丈夫。

下の例は、表示、非表示はゆっくりな動作を指定して、非表示にした場合にはボタンのラベルを「表示」にし、表示した場合には「閉じる」にしています。
<script type="text/javascript">
    $(function () {
        var button$ = $('input[type=button]');
        button$.toggle(
                function () {
                    $('div#hoge').fadeOut("slow", function() {
                        button$.val("表示");
                    });
                },
                function() {
                    $('div#hoge').fadeIn("slow", function() {
                        button$.val("閉じる");
                    });
                }
        )
    })
</script>

2012年2月19日日曜日

[jQuery]イベントに応じて要素の表示、非表示を切り替える(アコーディオン)

jQueryを使用して、要素の表示と非表示を切り替えるには、toggleやslideToggle関数を使うと簡単に実現出来ます。

toggle関数は、引数を指定しないで呼び出してあげるとその要素の表示(show)と非表示(hide)を繰り返してくれます。
slideToggle関数を使うと、非表示にするときには徐々に消えていき、表示するときにはにょきにょきでてきます。

引数なしでtoggleとslideToggleを使ってみる

以下のhtmlをdiv部分をボタンクリックイベントで表示、表示を切り替えてみましょう。
<input type="button" value="表示・非表示切り替え" id="btn">

<div id="view">
この部分の表示、非表示を切り替えます。
</div>

toggle関数を使用すると、非常に簡単に表示、非表示を切り替えられますね。
$(function () {
    $('input#btn').click(function () {
        $('div#view').toggle();
    });
})

slideToggleもtoggleと使い方は基本的に同じ。
$(function () {
    $('input#btn').click(function () {
        $('div#view').slideToggle();
    });
})

表示、非表示の速度を変えてみる

toggleとslideToggleの引数には、ミリ秒と速度を示す文字列を指定出来ます。

ミリ秒を指定した場合は、その時間をかけて非表示になったり表示したりしてくれます。
文字列は、「Slow」、「Normal」、「Fast」の3種類が指定できまる。
以下のように、文字列通の動作をします。ミリ秒指定と比べるとかなりおおざっぱな感じですね。
* Slow:ゆっくりした動作
* Normal:普通の動作
* Fast:早い動作

使い方の例。この例だと2秒間かけて表示と非表示されます。
$(function () {
    $('input#btn').click(function () {
        $('div#view').slideToggle(2000);
    });
})

文字列指定の場合は、こんな感じです。
$(function () {
    $('input#btn').click(function () {
        $('div#view').toggle('fast');
    });
})

2012年1月29日日曜日

[jQuery]class属性の操作

jQueryを使用して、html要素のclass属性を操作する方法

class属性に、任意のクラスを追加

addClassメソッドを使用して、クラスを追加出来る。

以下の例では、input要素すべてに「className」というクラスを追加しています。
$(function () {
  $('input').addClass('className');
});

複数のクラスを追加したい場合には、スペースで区切って複数のクラス名を列挙してあげるとよい。
もしくは、addClass('class1').addClass('class2')のようにメソッドチェイン呼び出しにしてあげるとよい。
個人的には、後者の方が好み。いくつのクラスが追加されてるか分かるし、クラス名を単独になるから可読性高くなるし。


class属性から、任意のクラスを削除

removeClassメソッドを使用して、クラスを削除することが出来る。

基本的な使い方は、addClassと同じ。

以下の例では、input要素から「className」というクラスを削除しています。
$(function () {
  $('input').removeClass('className');
});

イベントを拾ってclassの有無を切り替える

イベントに応じて特定のクラスを削除したり、追加したりする方法。
例えば、input:textにフォーカスがあたっている場合、背景色を変更するクラスを追加して、フォーカスが外れた場合に削除したりする場合に使える。
addClassとremoveClassを組み合わせて使用したら出来るけど、toggleClassというメソッドが用意されているので、こちらを使った方が見通しがよくなる。

この例は、フォーカスがあたった場合と外れた場合に、changeTextColorファンクションを呼び出しています。
呼び出し先のメソッドでは、toggleClass('active')となっているので、「active」クラスがあればクラス属性から削除され、なければ追加されます。
$(function () {
  $('input:text').focusin(changeTextColor).focusout(changeTextColor);
});
function changeTextColor() {
  $(this).toggleClass('active');
}

指定されたクラスがclass属性にあるかチェック


hasClassメソッドを使用してテストできる。

$(function () {
  $('input').hasClass('className');
});

2012年1月21日土曜日

[jQuery]テーブルの行の背景色を交互に変更する方法

trのoddとevenでひろってきて、cssで背景色を変えることが出来る。
テーブルのレコードを表すtrタグと、奇数(odd)、偶数(even)番目を表すselectorを
組み合わせて使うことで割と簡単に実現出来る。

    $(function() {
        // trの中で奇数番目のものを対象にする
        $('tr:odd').css({
            backgroundColor:'#aaaaaa'
        });
        // trの中で偶数番目のものを対象にする
        $('tr:even').css({
            backgroundColor:'#ffffff'
        });
    });

2012年1月14日土曜日

[JavaScript]checkboxのチェックをクリアする

特定のdiv要素のボタンがクリックされたら、そのdiv要素内のcheckboxのチェックを外す方法。

jQueryを使うとこんな感じで出来るみたい。

2012年1月8日日曜日

[JavaScript]文字列のtrim

jQueryのtrim関数を使用してtrimできる。

// jQueryのtrim関数を使用してtrimする。
$.trim("trimしたい文字列");

2011年12月31日土曜日

[Intellij]InttelijでjQueryを使ってみよう

IntelliJ IDEA Ultimate EditionではjQueryをサポートしているので、関数補完などを使いながら開発を行うことができます。
IDEでごりごり書いた方が、生産性あがるはずなので、IntellijでのjQueryライブラリの使い方を調べてみたと。

jQueryのライブラリを自分でダウンロードする場合

1.jQueryのサイトからjQueryのライブラリをダウンロードして任意のディレクトリに保存する。

2.Project Structure画面を開く

3.左側のメニューからGlobal Librariesを選択する。

4.「+ボタン」→「JavaScript」の順に選択する。(下の画像のように選択していく)

5.1で保存したjQueryのライブラリ(jquery-<バージョン番号>.js)を選択する。

6.左側のメニューからModulesを選択する。

7.jQueryを使用するModuleを選択して、依存ライブラリに5で追加したjQueryのライブラリを登録する。
登録すると下の画像のようにjQueryのライブラリが依存ライブラリにでてきます。
※Dependenciesタブを選択し、左下の「+ボタン」→「Library...」から5で登録したライブラリを選択出来ます。

Intellijの機能でダウンロードする場合

Inttelijには、JavaScriptのライブラリをダウンロードしてくれる機能があるので、
この機能を使うと依存ライブラリの設定まで簡単に行うことが出来ます。

1.Settings画面を開く

2.左側のメニューからJavaScriptLibrariesを選択する。(Project Settingsにあります)

3.Download from...のリンクをクリックしDownload LibraryのWindowでjQueryを選択してダウンロードする。(ちょっと古いバージョンみたいです。)
これで、依存ライブラリとしてjQueryのライブラリが設定されます。簡単ですね。

動作を確認してみよう

補完がちゃんと有効になってるみたい。使いやすいかわからないけど、とりあえずjQueryの勉強しつつ使ってみよう。