iOSのSafariで、jQueryのdelegate(on)でクリックイベントが動作しないバグの対処方法

jQueryのクロスブラウザなところにある程度の信頼をおいてコーディングしていても、あるとき落とし穴に陥る時がある。

今回はまさにそんなシーン、
iOSデバイスのSafariで、jQueryのdelegate(on)でクリックイベントが動作しないバグの対処方法を紹介します。

<div id="click">動作しない</div>
$("body").on("click", "#click", function() {
	alert("clicked!");
});

上記コードは、#clickが指定された要素のクリック時にアラートを表示するというもの。

jQueryの.on()の使用法としては、別の資料を参照してください。

javascript部分を.delegate()で記述すると、

$("body").delegate("#click", "click", function() {
	alert("clicked!");
});

となります。

どちらで書いたにせよ、iPhone・iPad・iPodのSafariではクリックイベントが発動しません。

この問題はHtml側の簡単な修正で、解決します。

<div id="click" onclick="">動作するようになった</div>

簡単解決!

原文はこちら。

jQuery .on() and .delegate() doesn’t work on iPad – stackoverflow.com

広告

t87r について

趣味:トランペット・釣り・コーディング JavascriptとGAE/Pythonを勉強中。
カテゴリー: Web Design タグ: , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中