人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryでaリンクにイベントを設定するモダンな書き方を教えてください


リンクにクリックイベントを設定するとき
最初
<a href="#" onClick="jump(1);">ページ1</a>
<a href="#" onClick="jump(2);">ページ2</a>

function jump(page) {
location.href = 'http://hoge' + page;
}

としてましたが、なんとなくjQueryでロード時にイベントを設定する方が良いのかなと思って、以下のように直しました


$(function(){
$("#one").click(function(){
location.href = 'http://hoge' + 1;
});
$("#two").click(function(){
location.href = 'http://hoge' + 2;
});
});

<a href="#" onClick="jump();" id="one">ページ1</a>
<a href="#" onClick="jump();" id="two">ページ2</a>


としたのですが、なんか冗長な気がします。どのように書くのがスマートでしょうか。
aリンクのhref属性が「#」になってしまっているのも微妙な気がします。

●質問者: anesawa
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Lhankor_Mhy
●100ポイント ベストアンサー

モダンなのかどうか分かりませんが、自分ならこう書きます。

$(function(){
 $(".jump").on('click',function(event){
 event.preventDefault();
 event.stopPropagation();
 location.href = 'http://hoge' + $(this).attr('href');
 return false;
 });
});
<a href="1" class="jump">ページ1</a>
<a href="2" class="jump">ページ2</a>

a-kuma3さんのコメント
preventDefault 呼んでも、return false 書いちゃう?

anesawaさんのコメント
なんかエレガントです。 ありがとうございました。 もうしばらく回答を募りたいと思います

Lhankor_Mhyさんのコメント
>a-kuma3 本当はいらないんでしょうけれど、submit周りでpreventDefaultが効かない事案に遭遇したことがあったので、あまりものを考えたくない時には全部書いちゃうことがあります。

Lhankor_Mhyさんのコメント
その動作で質問文通りだと思うのですが、 >|| 'http://hoge' ||< を以下の通りに修正すると、 >|| 'http://hoge/' ||< 想定されている動作になりますか?

anesawaさんのコメント
申し訳ありません。 肝心の$(function(){}を記述し忘れイベント自体がうまく設定できていませんでした。 うまく動きました。ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ