menu
menu

キーワード検索

 

最近の投稿

return falseの代わり

  • Labs

JavaScript

こんにちは(・∀・)

JavaScriptでaタグなどに使用してタグを無効にするreturn false、通常であれば特に問題はないのですが、最近aタグを無効にしつつもクリック(タッチ)イベントは伝えたいということがありました。例えばよくあるページ内スクロールでページ内を移動しつつ他のこともしたい場合、return falseでaタグの挙動が無効化されているとページ内スクロールの他にもう一つ何かしたくてもそのクリック(タッチ)イベントは、return falseによって伝えてくれません。ではどうすれば良いか。。。

preventDefault

そういう時はreturn falseの代わりにpreventDefaultを使えば解決します。

ボタンをクリックしてナビを展開するタイプのスマホサイトなどでよくあるタイプのメニューボタンで、クリックしてページ内移動しつつ展開したナビを閉じたい場合、return falseだとページ内移動はしても開いたナビを閉じてくれません。そこでreturn falseの代わりにpreventDefaultを使えばaタグを無効にしつつもクリック(タッチ)イベントは伝えてくれます。

サンプルデモ

サンプル1
クリック(タッチ)イベントにpreventDefaultを使用しているサンプル

サンプル2
クリック(タッチ)イベントにreturn falseを使用しているサンプル

サンプル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();
});
});
サンプル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;
});
});
関連リンク

ページトップボタンとページ内スムーススクロール
jQueryでページトップボタン
JavaScriptでスムーススクロール

  • カテゴリー:Labs