【Labs】return falseの代わり - web design lab
にほんブログ村 デザインブログ Webデザインへ PVアクセスランキング にほんブログ村

【Labs】return falseの代わり


【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でスムーススクロール


にほんブログ村 デザインブログ Webデザインへ PVアクセスランキング にほんブログ村