1

少し質問があります。クリック間隔を検出して条件を設定するオプションはありますか。たとえば、1秒間隔で1つずつクリックすると、何かを実行できます。0.5si後にもう一度クリックすると、他の何かを作成できますか?私はこれを書く方法がわからないので、このビジョンだけをコードに例を追加することはできません。また、他の分野でこの解決策を見つけることができません。助けてくれませんか?

var clicks=0;
function myClickFunction(event){
    clicks++;
}
$(function(){
    $("#something").on("click",myClickFunction);
        if (click == )){

        }   
    });
});

答えはたくさんあります!

4

4 に答える 4

1
var lastClickTime;

function testTime(time){
    switch (true) {
        case (time < 500):
            alert("less than 500ms!");
            break;
        case (time < 1000):
            alert("less than 1000ms but not 500ms!");
            break;
        default: 
            alert("you sure click slow!");
            break;
    }
}

$("#something").on("click", function(e){
    e.preventDefault();
    var newTime = new Date();
    if(lastClickTime !== undefined) {
         testTime(newTime - lastClickTime);
    } 
   lastClickTime = newTime;
});

これは簡単な方法ですが、いくつかのグローバルが作成されます。しかし、それはあなたを正しい道に導くはずです!

スイッチは、必要なすべての異なるケースを追跡するのに役立つ場合があります。

于 2013-01-24T10:38:56.400 に答える
0

バインドclickしてdblclick関数を試すことができます。ドキュメントを見て、これに注意してください:

注: 次の例で示されていますが、ハンドラーを同じ要素のクリック イベントと dblclick イベントの両方にバインドすることはお勧めできません。トリガーされるイベントの順序はブラウザーによって異なり、dblclick の前にクリック イベントを 2 回受け取るものもあれば、1 回だけ受け取るものもあります。ダブルクリックの感度 (ダブルクリックとして検出されるクリック間の最大時間) は、オペレーティング システムとブラウザーによって異なり、多くの場合、ユーザーが構成できます。

ソース

于 2013-01-24T10:34:46.533 に答える
0

最後のクリックの時間を手動で追跡する必要があります。次に、イベントハンドラーが呼び出されるたびに、現在の時刻と保存されている時刻を比較します。

擬似コード:

last_click_time = 0
onClick () {
  if ( last_click_time == 0 ) {
    // first click
    last_click_time = time.now();
  } else {
    time_difference = time.now () - last_click_time;
    if ( time_difference == 0.5 ) {
      // half a second since last click
    } else if ( time_difference == 1 ) {
      // one second since last click
    }
    ...
    last_click_time = time.now ();
  }
}
于 2013-01-24T10:35:15.803 に答える
0

タイミングを正確に制御したい場合は、現在のマシンのミリ秒を確認するだけです。

フィドルへのリンク

HTML:

<a id="asd">yo</a>

Javascript:

$("#asd").click(function(){
    var latest = $(this).data("time") || 0;
    var now = +new Date();
    var diff = now-latest;
    if(diff < 500) alert("That was faster than 0.5 seconds!");
    if(diff > 1000 && diff < 1500) alert("That was between 1.0 and 1.5 seconds.");
    $(this).data("time",now);
});
于 2013-01-24T10:35:54.120 に答える