アコーディオン ドロップダウンメニュー ハンバーガーメニュー
jQueryはJavaScript用のライブラリ。HTMLを動的に操作することは簡単にできる。
googleからCDNを使い、HTMLのheadタグ内にてscriptタグを使って読み込む。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
その下にjQueryの記述場所を以下のようにして設ける。
<script type="text/javascript"> $(function(){ // ここに記述 }); </script>
通常は以下のような形で使用する。
$("セレクタ").メソッド(引数);
セレクタには css でのセレクタを使うことができる。
メソッドの効果はセレクタが適用されるタグ全てに適用される。
//例:IDがabcのタグの中身を「りんご」に変える。 $("#abc").html("りんご");
$("セレクタ")は、jQueryオブジェクトを意味し、そのメソッドである html() を呼び出している。
//例:Pタグで囲まれた部分を全て「りんご」に変える。 $("p").html("りんご"); //例:class=abcのタグの中身を「りんご」に変える。 $(".abc").html("りんご"); //例:divタグの中のbタグの中身を「りんご」に変える。 $("div b").html("りんご");
htmlメソッドで、タグに囲まれた文字を変更できる。
$("#abc").html("りんご");
引数を無しにすると囲まれている文字列を取得できる。
例:IDがabcのタグで囲まれた文字列を変数strに代入 var str = $("#abc").html();
htmlと似たメソッドにtext()がある。
htmlではタグを含めて変更できるが、textでは文字列になる。
$("#abc").text("りんご");
タグの属性を変更するには attr メソッドを使う。
// aタグのhref属性を yahooにする $("a").attr("href","http://www.yahoo.co.jp");
引数を属性名だけにするとその値を取得できる。
// aタグのhref属性を取得 var link = $("a").attr("href");
inputタグに入力した値は value 属性で変更・取得できるが、よく使う属性なので、valメソッドが用意されている。
// IDがabcのタグのvalue属性を「テスト」にする $("#abc").val("テスト");
引数を無しにするとその値を取得できる。
// IDがabcのタグのvalue属性を取得 str = $("#abc").value();
cssメソッドで、cssを変更できる。
// IDがabcのタグのcssでcolorプロパティをredにする $("#abc").css("color","red");
引数をcss名だけにするとその値を取得できる。
// IDがabcのタグの色を取得 str = $("#abc").css("color");
既存のタグに囲まれた文字列にさらに文字列を追加するには、 append メソッドを使う。
// IDがabcのタグに「テスト」を追加する。 $("#abc").append("テスト");
既存のタグにclassを追加するには、addClass メソッドを使う。
// IDがabcのタグにclassとして「test」を追加する。 $("#abc").addClass("test");
逆に既存のタグからclassを削除するには、removeClass メソッドを使う。
// IDがabcのタグにclass「test」を削除する。 $("#abc").removeClass("test");
html(文字列) | タグの設定(引数無しで取得) |
text(文字列) | テキストの設定(引数無しで取得) |
attr(属性名, 値) | 属性の設定(値無しで取得) |
val(文字列) | value属性の設定(引数無しで取得) |
data(名前, 値) | data-名前 属性の設定(値無しで取得) |
css(プロパティ, 値) | cssプロパティの設定(値無しで取得) |
append(文字列) | 中身の最後に文字列を挿入 |
prepend(文字列) | 中身の最初に文字列を挿入 |
after(文字列) | 後に文字列を挿入 |
before(文字列) | 前に文字列を挿入 |
remove() | 要素の削除 |
addClass(クラス名) | クラスの追加 |
removeClass(クラス名) | クラスの削除 |
focus() | カーソルの移動 |
イベントは何らかの変化が生じたときに発生する
例:クリックした、キーを押した、etc
イベントドリブン:イベント駆動型プログラミング
特定のイベントが発生したときに何をするか、を定義していくプログラミング手法。
例:IDがabcのボタンをクリックしたときに、色を赤にする。
イベント名のメソッドに対し、関数(function)を渡す。そのfunction の中で、そのイベントが発生したときの処理を行う。
$("セレクタ").イベント名( function(){ // 処理 });
例:IDがabcのタグをクリックしたとき、h1タグを赤にする。
$("#abc").click( function() { $("h1").css("color","red"); });
例えば、h2タグをクリックしたとき、h2タグを赤にするとする。
$("h2").click( function() { $("h2").css("color","red"); });
このとき、クリックしたタグのみを赤にしたいときには、this を使う。
$("h2").click( function() { $(this).css("color","red"); });
※注:this は""で囲まない
click | クリックしたとき |
dblclick | ダブルクリックしたとき |
change | 変更があったとき |
focus | フォーカスを取得したとき |
blur | フォーカスを失ったとき |
keydown | キーを押したとき |
keyup | キーを押して上がったとき |
mouseover | マウスが上に来たとき |
タグの指定方法では、通常 $(セレクタ) のように指定する。このときには全体からそのセレクタを検索するが、$(セレクタ,検索対象)のように、第二引数に検索対象を指定することができる。
例えば、検索対象に this を指定することで、クリックしたタグ内にある特定のタグを指定できる。
//例:divタグをクリックしたとき、そのタグの中にあるspanタグの色を赤にする。 $("div").click( function() { $("span",this).css("color","red"); });
セレクタで指定する代わりに、メソッドを使用し、対象となる要素を指定できる。
例えば、$(セレクタ)で指定したタグの後に .next() を付けることで、次のタグを指定できる。
//例:divタグをクリックしたとき、クリックしたタグの次のタグを赤にする。 $("div").click( function() { $(this).next().css("color","red"); });
next() | 次のタグ |
prev() | 前のタグ |
parent() | 親のタグ |
siblings() | 兄弟タグ |
children() | 子のタグ |
eq(数) | 数番目 |
複数のタグが対象になるセレクタの場合、eachメソッドを使ってそれぞれのタグを処理することできる。
//例:divタグのうち、中身が abc のタグのみ赤にする。 $("div").each( function() { if( $(this).html() == "abc" ){ $(this).css("color","red"); } });
showメソッドで表示、hideメソッドで非表示にできる。
$("#abc").hide();
引数にミリ秒単位で数値を指定するとアニメーションを行う。数値は完了する時間を表す。
$("#abc").hide(1000);
切り替える(表示しているときは非表示に、非表示の時には表示に)には toggle メソッドを使用する。
$("#abc").toggle(1000);
表示の仕方により、他のメソッドもある。
show | 表示 |
hide | 非表示 |
toggle | 表示・非表示切り替え |
slideDown | スライドして表示 |
slideUp | スライドして非表示 |
slideToggle | スライドして切り替え |
fadeIn | フェードインして表示 |
fadeOut | フェードアウトして非表示 |
fadeToggle | フェードイン・アウトの切り替え |
animateメソッドで独自のアニメーション効果を作ることができる。
animate( {完了後のCSS} , 時間 , 変化量)
※変化量にはlinear(一定)かswing(徐々に速く)を指定
// 例:100msで幅が500pxになる(徐々に速く) $("#abc").animate({width:500px},100,"swing");
Ajax = Asynchronous JavaScript + XML
非同期 JacaScript による XML 通信
ページを切り替えることなく、JavaScriptによりhttp通信を行いXML等のデータを得ること。
最近はXMLに限らず、JSONのデータをやりとりする場合が多い。
$.get によりajaxでHTMLなどのデータ取得が可能。
$.get(URL,パラメータ,関数);
// 例:URL shouhin でhtmlを返す場合 $.get('shouhin',function(data){ $("#out").html(data); // id="out" に data を挿入 });
setInterval(関数, 間隔) で行う。間隔はミリ秒単位で指定。その間隔ごとに関数が呼び出される。
function show(){ $.get('shouhin', function(html){ $("#out").html(html); }); } setInterval(show,5000);
$.getJSON によりajaxでJSON形式が取得が可能。
$.getJSON(URL,パラメータ,関数);
// 例:ファイル「test.json」が以下の内容の場合 //{"sname":"りんご","tanka":100} $.getJSON('test.json',function(json){ $("#out").html(json.sname); });
Gsonをダウンロードし、WEB-INF/libに入れておく。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // サンプルとして商品ID:1を取得 ShouhinDAO dao = new ShouhinDAO(); Shouhin s = dao.findBySid(1); Gson gson = new Gson(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.print(gson.toJson(s)); // JSON変換 }
$.post により他ページへPOSTで通信することが可能。
$.post(URL,送信データ,関数);
// 例: $("#tuika").click(function(){ var s = $("#sname").val(); var t = $("#tanka").val(); $.post( "add.php" , { sname: s , tanka : t} , function(){ alert("追加しました"); } ); })
これは次のフォームで送信したことと同じ。
<form method="post" action="add.php"> <input type="text" name="sname"> <input type="text" name="tanka"> <input type="submit"> </form>