5月更新・前月(4月)の人気記事トップ10 05/02/2023
- ( 02 ↑) 【Mac】MacにGoogle Driveをインストール
- ( 01 ↓) 【iPhone / iPad】iPhoneでSuicaをクレジットカード無しで使う方法
- ( 03 – ) 【iPhone / iPad】iPhoneのツイッターアプリでユーザー名をコピーする方法
- ( 05 ↑) 【Mac】Macのユーザー名とアカウント名を変更する
- (圏外↑) 【Labs】CSSだけでドロップダウンメニュー
- ( 07 ↑) 【jQuery】入門2. jQueryをHTMLに組み込む
- ( 04 ↓) 【Labs】position:absoluteとwidth:100%を指定すると横幅の設定がうまくいかない場合の対処方法について
- (圏外↑) 【2022年7月】Mac画面解像度まとめ
- (圏外↑) 【GIMP】線を真っ直ぐ引く方法
- ( 08 ↓) 【Labs】マウスオーバーでボタンの色が変わるロールオーバー
【Labs】return falseの代わり
こんにちは(・∀・)
JavaScriptでaタグなどに使用してタグを無効にするreturn false、通常であれば特に問題はないのですが、最近aタグを無効にしつつもクリック(タッチ)イベントは伝えたいということがありました。
例えばよくあるページ内スクロールでページ内を移動しつつ他のこともしたい場合、return falseでaタグの挙動が無効化されているとページ内スクロールの他にもう一つ何かしたくてもそのクリック(タッチ)イベントは、return falseによって伝えてくれません。
ではどうすれば良いか...
preventDefault
そういう時はreturn falseの代わりにpreventDefaultを使えば解決します。
ボタンをクリックしてナビを展開するタイプのスマホサイトなどでよくあるタイプのメニューボタンで、クリックしてページ内移動しつつ展開したナビを閉じたい場合、return falseだとページ内移動はしても開いたナビを閉じてくれません。
そこでreturn falseの代わりにpreventDefaultを使えばaタグを無効にしつつもクリック(タッチ)イベントは伝えてくれます。
サンプル1のJavaScript
preventDefaultを使ったサンプルです。
preventDefault
$(function() {
//移動するスクリプト
$('a[href^=#]').click(function(ev) {
var href= $(this).attr('href');
var target = $(href == '#' || href == '' ? 'html' : href);
var position = target.offset().top;
$('html,body').animate({scrollTop: position}, 500, 'swing');
//return false;
ev.preventDefault();
});
});
Result
【Labs】クリック(タッチ)イベントにpreventDefaultを使用しているサンプルサンプル2のJavaScript
return falseを使ったサンプルです。
return false
$(function() {
//移動するスクリプト
$('a[href^=#]').click(function() {
var href= $(this).attr('href');
var target = $(href == '#' || href == '' ? 'html' : href);
var position = target.offset().top;
$('html,body').animate({scrollTop: position}, 500, 'swing');
return false;
});
});
Result
【Labs】クリック(タッチ)イベントにreturn falseを使用しているサンプル関連リンク
【Labs】ページトップボタンとページ内スムーススクロール
【Labs】jQueryでページトップボタン
【Labs】JavaScriptでスムーススクロール