一晩で覚えるjQueryの逆引き基礎サンプル7つ*ホームページを作る人のネタ帳
jQueryに書くとほってんとり入りできるらしいので便乗。というかリンク先で紹介されているサンプルコードにちょっと意義異議あり。
一個のサンプルは非常に単純な構造になっておりますゆえ、jQueryをすでにやったことがある人にとって必要ないものだということをあらかじめご了承くださいませ。
ということであれば、「jQueryらしい」書き方をした方が良いかなと思います。
で、僕ならこう書くってことで。
全般的に使われている$(document).ready(fn)は、$(fn)でショートカットできます。
$(document).ready(function(){alert('hoge');})
は、
$(function(){alert('hoge');})
こう書けると。
まあ、これはどうでもいいや。短く書けるってだけなので。初心者向けに$(document).ready(fn)で説明した方が、「ドキュメントが準備完了になったら」というニュアンスが伝わるのかも。
次に、HTMLとJavaScriptの分離ってことで、サンプルでは、
<input name="btn22" type="button" value="ローディング" onClick="bt01()">
<div id="load1"></div>
と、HTMLのonclickに関数を書いていますが、id属性をつけてJavaScriptのコードで
$('#hoge').click(bt01)
と書くほうがjQueryっぽいのでは。
次に、「閉じる、開くボタンを同一の場所で交互にしたい」というtoggleの処理。サンプルでは、ローディングするHTMLにボタンを書いちゃってますが、これだとメンテナンス性が落ちちゃうんじゃないかなー。
ってことで、
<div id="load1"><input name="btn22" type="button" value="ローディング" onClick="bt01()"></div>
は、
<input name="btn22" type="button" value="ローディング" onClick="bt01()"><div id="load1"></div>
こんな感じにローディングする部分の外にボタンは出しちゃいましょう。あとは、JavaScriptで
$('input[name=btn22]').toggle(
function(){
$("#load1").load("./load.html");//HTMLをロードする処理
$(this).attr('value','閉じる')//自分自身のvalueを"ローディング"から"閉じる"に変える。
}
,function(){
$("#load1").html("");//HTMLを消す処理
$(this).attr('value','ローディング')//自分自身のvalueを"閉じる"から"ローディング"に変える。
}
);
こんな感じかな。長くなって分かりにくくなっちゃったかもね。
あと、jQueryのselectorは,区切りで複数指定できるので、
$(document).ready(function(){
$("#ls1").keyup(function () {
var value1 = $("#ls1").val();
var value2 = $("#ls2").val();
$("#ls3").val(value1 * value2);
}).keyup();
$("#ls2").keyup(function () {
var value1 = $("#ls1").val();
var value2 = $("#ls2").val();
$("#ls3").val(value1 * value2);
}).keyup();
});
は、
$(document).ready(function(){
var calc = function(){
var value1 = $("#ls1").val();
var value2 = $("#ls2").val();
$("#ls3").val(value1 * value2);
}
$("#ls1,#ls2").keyup(calc).keyup();
});
こう書いた方がすっきりするし、同様に
function del(){
$("#ls1").val("");
$("#ls2").val("");
$("#ls3").val("");
}
は、
function del(){
$("#ls1,#ls2,#ls3").val("");
}
と書いた方がかっこゆすだと思います。
jQueryを使ったことない人向けってことだったのだけど、HTMLとJavaScriptを分離できるってところが魅力の一つだし、なるべく短くコードが書けるってところもアピールできたらと思って書いてみました。
別にこれが「正解」ってつもりで書いてないので、あしからず。あくまで僕ならこう書くってことで。
2008/4/18 12:20 追記:
本当にページ中のテキスト入力フォームをすべて空にしたいのであれば、
$('input:text').val('')
でいけます。
あと、jQueryとは直接関係ないかもしれませんが、最後のサンプルで、aタグをcodeタグで囲って、さらにクリックしたときにcodeタグのtitle1,2,3属性とかを持ってくるというのは止めた方が良いですよね。
var clickFunc = function(txt1,txt2,txt3){
$('#ls1').val(txt1);
$('#ls2').val(txt2);
$('#ls3').val(txt3);
}
こんな関数を定義して、各aタグに、
$('a:eq(0)').click(function(){clickFunc('北海道','飛行機','2000')});
とイベントを定義していくかなぁ。まあ、この辺はもっと上手い書き方で来ますね。
コメント (5)
CSSのセレクタによる指定は便利ですよね~
Dojo、mootools、prototypeでも対応しているみたいですが
http://mootools.net/slickspeed/
CSS3のセレクタまでも一部対応してるのが(nth-childとか)すばらしいです。
Posted by: gnety | 2008年4月18日 22:54
速度検証のページなんてのがあるんですね!
CSSセレクタの指定はかなり便利ですよね。
jQueryをよく使うようになったおかげで、CSSのセレクタを覚えられるようになったくらいです。
Posted by: Chris | 2008年4月20日 00:34
海外ブランド取扱店bagshop2009
2009年5月に当店は大量の商品を取り入れて倉庫に入れます.
LOUIS VUITTON 2009
ルイヴィトン【LOUIS VUITTON】新作(2009年)2009クルーズ・コレクション,
SS09ビーチ, スティーブン・スプラウス コレクション,
おすすめ人気ブランド腕時計
ロレックス, ROLEX,
オメガ, OMEGA,
ブルガリ, BVLGARI,
カルティエ, CARTIER,
ブランドヒストリー, IWC,
等,多種のシリーズの腕時計.
ブランド激安市場bagshop2009
担当:松本
■ショップURL:http://www.bagshop2009.com 『興味あれば、是非ご覧下さい 』
■連絡先:bagshop2009@188.com
◆+--- ◆ 送料無料 ◆---+◆
Posted by: 松本 | 2009年6月25日 15:46
ブランド激安注目市場
送┃ 料┃ 無┃ 料┃
━┛ ━┛ ━┛ ━┛
当店には、ルイヴィトン、シャネル、グッチ、コーチ、ロレックス、プラダ、 ディオール、ブルガリ財布 その他小物等、
ブランド品、、ルイウ゛ィトン、PRADA、Coach、GUCCI、CHANEL、BVLGARI、デュポン、ROLEX時針
各種海外有名ブランド品を豊富に取り揃え、しかもお客様を第一と考えて、驚きの低価格で提供しております
2008秋冬商品入荷しました. 超人気ブランド LOUIS VUITTON、CHANEL、GUCCI
モーフィンジェネレーションの品揃えには自信あり. 新作続々入荷.
激安、安心、安全にお届けします.品数豊富な商
商品数も大幅に増え、品質も大自信です
100%品質保証!満足保障!リピーター率100%!
■HP: http://www.copy-brand-sale.com
絡先: brandabcd@21cn.com
Posted by: ブランド激安注目市場 | 2009年7月 1日 12:49
突然メ-ルを送り失礼しました。
当社の商品全て正規商品です。(保証します)
当店の主要な経営のブランド:
ルイヴィトン(LOUIS VUITTON)、シャネル(CHANEL)、エルメス(HERMES)、グッチ(GUCCI)、ティファニー(TIFFANY & CO)、クロエ(CHLOE) 、ロレックス(Rolex) AAA級,,S級 ヴィトン、シャネル、グッチ、財布、バッグ。
◆ 2009 4月 新作 入荷!
http://www.subabag.com/2008-9-30/9y01.html
最新作ルイヴィトン.シャネル.バック、財布. スーパーコピー専門店
嬉しい全国送料無料! 財布 ブランド 激安満載
海外ブランド品安心ショッピング バッグや財布等がお買得!
◇ 品質を最大限本物と同等とする為に相応の材質にて製作している為です。
★ 私の会社の商品は現在取引において信用は良好
で、数多くのお客様に安心して、商品の購入を
していたたいております。
URL: http://www.subabag.com/
メール注文: kabangjp@163.com or ourbrand@21cn.com
ourbrandscopy@yahoo.co.jp
Posted by: sdf | 2009年7月 3日 09:32