• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQuery .click()関数について)

jQuery .click()関数について

このQ&Aのポイント
  • jQuery .click()関数を使用することで、アンカーへのリンク時に不要なURLの付加を回避することができます。
  • 特定のアンカーへのリンクをクリックした場合に、スムーズなスクロールで移動することができます。
  • ただし、現在のコードでは、現在のページ内のアンカーのみに対応しており、別のページのアンカーには対応していません。

質問者が選んだベストアンサー

  • ベストアンサー
  • sanzero
  • ベストアンサー率56% (58/102)
回答No.2

#1さんの回答にもありますが、いったんsessionStorageに保存して 遷移先でその値を取得しスクロールさせます。 //遷移元のjavascript jQuery(function($){ $('a[href^=#]').click(function() { // アンカーの値取得 var href= $(this).attr("href"); smoothScroll(href); return false; }); $('a:not([href^=#])').click(function(e) { //通常の動作をストップ e.preventDefault(); // アンカーの値取得 var href = $(this).attr("href"); var tmp = href.split("#"); var url = tmp[0]; var hash = "#" + tmp[1]; //アンカーリンクを一時保存 sessionStorage.setItem("hash", hash); //遷移 location.href = url; }); }); function smoothScroll(href){ var speed = 400;//スクロール速度(ミリ秒) var target = $(href == "#" || href == "" ? 'html' : href);//移動先オブジェクト console.log(target); var position = target.offset().top;//移動先のY座標 /* スムーススクロール */ //$($.browser.safari ? 'body' : 'html').animate({scrollTop:position}, speed, 'swing'); var body = 'body'; if (navigator.userAgent.match(/MSIE/)) { /*IE6.7.8.9.10*/ body = 'html'; } $(body).animate({scrollTop:position}, speed, 'swing'); return false; } //遷移先 jQuery(function($){ var hash = sessionStorage.getItem("hash"); if(hash){ sessionStorage.removeItem("hash"); smoothScroll(hash); } }); function smoothScroll(href){ var speed = 400;//スクロール速度(ミリ秒) var target = $(href == "#" || href == "" ? 'html' : href);//移動先オブジェクト var position = target.offset().top;//移動先のY座標 /* スムーススクロール */ //$($.browser.safari ? 'body' : 'html').animate({scrollTop:position}, speed, 'swing'); var body = 'body'; if (navigator.userAgent.match(/MSIE/)) { /*IE6.7.8.9.10*/ body = 'html'; } $(body).animate({scrollTop:position}, speed, 'swing'); return false; }

mayomayo123
質問者

お礼

物の考えから実際のコードまで示して頂いて感謝の言葉もありません。 流用させて頂いた所、して欲しいと思った動きをそのまま再現してくれました。 もっと勉強しコードを理解できるよう努めます。本当にありがとうございます。

その他の回答 (1)

回答No.1

別ページの#xxxを消しちゃったら、その別ページで表示する際にどこだかわからなくなっちゃうからね。 ぱっと思いつくのは別ページのリンクだったらクッキーかなんかに選択された#xxxを保存して、 別ページでクッキーから#xxxを取得して、そこまでスクロールさせる動きかな?

mayomayo123
質問者

お礼

>別ページの#xxxを消しちゃったら、その別ページで表示する際にどこだかわからなくなっちゃうからね。 その考え方はありませんでした。 外ページに移動する際の参考サイトが中々見つからなくて苦戦してます。

関連するQ&A