ユーザーが任意の html ノードを 3 回クリックすると発生するカスタム イベントを作成しようとしています。
を使用しても作成できることを知っています
var evt = document.createEvent("Event");
evt.initEvent("myEvent",true,true);
しかし、その 3 回のクリック イベントをキャプチャする方法がわかりません。
誰かがこれに対する書き込みアプローチを提案してくれれば幸いです。
ありがとう!!!
ユーザーが任意の html ノードを 3 回クリックすると発生するカスタム イベントを作成しようとしています。
を使用しても作成できることを知っています
var evt = document.createEvent("Event");
evt.initEvent("myEvent",true,true);
しかし、その 3 回のクリック イベントをキャプチャする方法がわかりません。
誰かがこれに対する書き込みアプローチを提案してくれれば幸いです。
ありがとう!!!
特別なイベント コードと例を作成できます-これが問題の解決です:)
クリック数を格納する変数を作成するだけです。
var clickTimes = 0;
element.addEventListener('click', function(event) {
clickTimes++;
if(clickTimes==3) {
clickTimes = 0;
/* do something like dispatch my custom event */
}
});
これにより、特定の要素のクリックがカウントされ、3 回目のクリックごとにイベントがトリガーされます。
$('selector').on('click',function(e){
Event_threshold = 500;
var clicked_times = $(this).data('Event-clicked-times');
if(clicked_times == '')
clicked_times = 0;
if(clicked_times == 0)
$(this).data('Event-first-click-timestamp',e.timeStamp);
clicked_times++;
if(e.timeStamp-$(this).data('Event-first-click-timestamp')<Event_threshold)
{
if(clicked_times == 3)
{
$(this).data('Event-clicked-times',0);
$(this).trigger('Event');
}
else
$(this).data('Event-clicked-times',clicked_times);
}
else
$(this).data('Event-clicked-times',0);
});
編集: しきい値コントロールを修正および追加しました。
これは外部変数を使用せずに動作し、HTML5 の「data-」属性をストレージに使用するため、複数の要素で作業することになります。
$('#yourLink').click(function() {
window.setTimeout(function() {$(this).data("count",1)},300)
if(typeof $(this).data("count")=='undefined') {
$(this).data("count",1)
}
else {
var myCount = parseInt($(this).data("count"))
myCount++
if(myCount==3) {
alert("3!")
$(this).data("count",0)
}
else {
$(this).data("count",myCount)
}
}
})
反復変数を作成し、要素が 3 回クリックされたかどうかを確認できます。
例えば:
var clickTimer = 0;
document.body.addEventListener('click', function() {
clickTimer++;
if(clickTimer == 3) {
clickTimer = 0;
// fire your event
}
}, true);
dbclick
タイムスタンプを最初のクリックと比較できるように、この動作を行うことができます。
例えば:
var clickTimes = 0;
var fisrtClickTime = 0;
element.addEventListener('click', function(event) {
clickTimes++;
if(clickTimes == 1) {
fisrtClickTime = +new Date();
}
if(clickTimes == 3) {
clickTimes = 0;
firstClickTime = 0;
if((+new Date() - fisrtClickTime) < 1000) {
/* do something like dispatch my custom event */
}
}
});