質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

2回答

5806閲覧

jQueryでタップイベントが起動しない

drunmei1373

総合スコア6

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/05/10 06:48

編集2017/05/10 06:52

はじめまして。現在スマホ版サイトを制作しているのですが、jQueryでハンバーガーをタップしたときにメニューがshowするようにし、「閉じる」ボタンをタップしたときにメニューがhideするようにしたいのですが、できずに困っております。

on clickでも多少タイムラグがあるものの対応できるようなことがネットに書いてあったのですが、まったく動かず…。
jQuery mobile 1.3.1からモバイルイベント部分のみを取り出したソースをjquery-1.10.2.min.jsにコピペしてtapイベントを書き、サーバーにアップしてみたのですが、まったく反応いたしません。

つたないプログラムでお恥ずかしいのですが、以下のように書いております。

$(function() { $(".sp_navigation").hide(); $("#sp_menu").on('tap', function() { $(".sp_navigation").show('fast', function(){ $(".close").on('tap', function() { $(".sp_navigation").hide('fast', function() { }); }); }); }); });

内容が間違えているのかと思い、「tap」を「click」にし、ローカルで試したところ問題なくクリックにてイベントが発生いたしましたので、id、class名間違いはなさそうです。

本当に初歩的な質問で心苦しいのですが、アドバイスをいただければ幸いです。

何卒宜しくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/05/10 06:50

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答2

0

Touch Events

「tapイベント」はどこから引っ張ってきました?
(2017/05/10 16:54追記。質問者の補足で jQuery Mobile の独自拡張イベントと判明)

tap event (jQuery Mobile)

原因の切り分け

現状、原因不明の為、下記手順で切り分けしてください。

  • 現象を再現可能な最小限のソースになるまでソースコードを切り出す(他の余計なHTML/CSS/JavaScriptを削除する)
  • 「モバイルイベント処理の部分のみを抜き出したもの」ではなく、jQuery Mobileそのものを使用して確認する
  • jquery関連jsファイルの読み込み順に問題がないか確かめる(jquery.jsを読み込む前にjQueryコードを書いていたり、jquery.jsを読み込む前にjquery-mobile.jsを読み込んでないか)
  • 下記コードを実行して、どのイベントがタップ時に反応するのか切り分ける

JavaScript

1function handleEvent (event) { alert(event.type); } 2jQuery(document).on('click', handleEvemt); 3jQuery(document).on('tap', handleEvemt); 4jQuery(document).on('touchstart', handleEvemt);

Re: drunmei1373 さん

投稿2017/05/10 06:54

編集2017/05/10 08:01
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2017/05/10 08:07 編集

親記事を追記しました。 ローカル上でclickでは正常動作するとの事ですが、tapイベントの時のサーバ上のファイルと全く同じかどうなのかが気になります。 サーバ上では本番環境なのでローカルにないコードがいろいろとあるのでは…。 原因を切り分ける為には最小限のコードである事が重要です。いきなり本番環境にコードを持ってくると、他のコードと干渉しているのか、書いたコードに問題があるのかさえ分かりません。
drunmei1373

2017/05/10 08:06

ありがとうございます。ちょっとやってみます。
guest

0

touchstart では?

【touch, click, pointerの実装 - タッチイベントとマウスイベント | CodeGrid】
https://app.codegrid.net/entry/touch-mouse

【TouchEvent - Web API インターフェイス | MDN】
https://developer.mozilla.org/ja/docs/Web/API/TouchEvent

投稿2017/05/10 06:52

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

drunmei1373

2017/05/10 07:15

お世話になっております。上のURLに私も調べてたどり着き、 $(function() { $(".sp_navigation").hide(); $("#sp_menu").addEventListenerr('touchstart', function(event) { updateEventname('touchstart'); updateXY(event); $(".sp_navigation").show('fast', function(){ }, false); $(".close").addEventListenerr('touchstart', function(event) { updateEventname('touchstart'); updateXY(event); $(".sp_navigation").hide('fast', function(){ }, false); }); }); }); と書いてみたのですが、イベントが発生いたしませんでした。それでtapイベントを試してみたのですが、どちらもダメでした。
kei344

2017/05/10 07:38

上記ページでは問題なくイベントが確認できますよね? updateEventname とか updateXY という関数を使っていますが、定義していますか?エラーは出ませんか? また、イベントの中でイベントを定義しないほうが良いですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問