を定義しますが、その後にされているプラットフォームを識別する必要がありますあなたがタッチスクリーンデバイスを扱っているとき。ここで
、私はその値として「クリック」をデフォルトの私のクリックイベント、保存するために、myUtils、グローバルオブジェクト変数を使用します。
var myUtils = myUtils || {};
myUtils.events = myUtils.events || {
click : "click"
};
検出されたタッチスクリーンがある場合、その後、私は私のmyUtilsを変更します。 「touchstart」の値を持っているevents.clickプロパティ:私は私の要素に私のクリックイベントをバインドしていたときに
if (typeof document.body.ontouchstart !== "undefined") {
myUtils.events.click = "touchstart";
}
は今、私はイベントの名前のための私のmyUtils.events.clickプロパティを使用します。
$(function() {
$("#link").bind(myUtils.events.click, function(e) {
alert("I'm a " + e.type);
e.preventDefault();
});
});
このようにすれば、「それはタッチスクリーンですか?私のアプリケーションで一度テストすれば、その後、必要に応じて「タッチスタート」または「クリック」にバインドされます。モバイルデバイス上で望ましくないクリックイベントをキャンセルすることについて心配する必要はありません。なぜなら、そのイベントは決して最初にバインドされないからです。
e.preventDefault()を呼び出すと、リンクが続くことはありません(#linkはhrefリンクであると仮定します)。
JSFiddleバージョン:http://jsfiddle.net/BrownieBoy/Vsakw/
は、このコードは、タッチスクリーンデバイスはのみタッチスクリーンデバイスであることを前提としていることに注意して。すなわち電話またはタブレットである。タッチスクリーンPCを使用している場合、マウスで使用することはできません!
.trigger( 'onclick')をタップしたときのようなもの – Huangism
はい、クリックしたときにonclickが発砲するのを防ぐ方法はありますか? – gregavola
リンクに行かないようにする方法はありますか?またはあなたがトリガーしたくないどこかのonclick関数がありますか? – Huangism