2012-05-08 8 views
2

Zeptoを使用してonclickからモバイルWeb-appに簡単にリンクを書き直すことはできますか?現在、私はonclickのすべてのインスタンスに対して$ .tapコマンドを起動したいと思います。ZeptoでonClickメソッドをタップメソッドに変換

<a href="#" tap="doSomething(); return false;">Link</a> 

例えば

が可能これは、または発射からonclickのを防ぐが、onclickの方法を取ると$ .TAPメソッド内で呼び出す方法はありますか?

Zeptoを使用して高速ボタンを作成するための提案はありますか?

+0

.trigger( 'onclick')をタップしたときのようなもの – Huangism

+0

はい、クリックしたときにonclickが発砲するのを防ぐ方法はありますか? – gregavola

+0

リンクに行かないようにする方法はありますか?またはあなたがトリガーしたくないどこかのonclick関数がありますか? – Huangism

答えて

0

大丈夫ですので、私はあなたがモバイルとデスクトップ上で異なるコードを使って異なる行動をしたいと思っています。そうなら、あなたはもっとエレガントな方法は、変数にあなたのクリックのトリガーを保存し、「touchstart」に「クリック」からその変数を再マッピングすることですあなたのコード

if(MOBILE) { 
    $('element').click(function(){ 
     return false; 
    }); 

    $('element').on('touchstart', function(){ 
     // functionality of the onclick written here 
    }); 
} 
else { 
// desktop event listeners 
} 
+0

右ですが、解散する必要のあるハッシュフラグメント(Page Oneなど)がありますが、それでもURLを変更する必要があります。返品が偽であれば、URLが無効になりますか? – gregavola

+0

'live'を避けてください...代わりに' on'を使用してください。 – chowey

2

を定義しますが、その後にされているプラ​​ットフォームを識別する必要がありますあなたがタッチスクリーンデバイスを扱っているとき。ここで

、私はその値として「クリック」をデフォルトの私のクリックイベント、保存するために、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を使用している場合、マウスで使用することはできません!

+0

+1 JSFiddleスパイクのために。 – Shahul3D

関連する問題