2013-03-15 3 views
0

У меня есть код в JQuery, как это:Как проверить, было ли событие возбуждено один раз?

$("#something").click(function() { 
}; 

и внутри функции я хотел бы проверить, если #something была нажата только один раз в течение короткого времени, и если два и более, то действовать, как один раз.

Я попробовал этот код:

if(!event.detail || event.detail == 1) { do_something; } 

и он работает в большинстве браузеров, кроме Firefox. Я знаю почему, но не нашел для этого решения. Я пробовал preventDefault на dblclick событиях, но он не работает в Chrome ...

Любые идеи?

+0

Если вы хотите запустить событие только один раз. Есть метод jQuery '.one()' для этого – Jashwant

+0

Я не хочу запускать его только один раз, но один раз за короткое время. Если инициированное событие завершено, я могу запустить его снова, но только после его завершения. Поэтому, в основном, я хочу игнорировать запуск одного и того же события, если он обрабатывается, но после его завершения я хочу снова запустить его. – Przemek

+0

Вы можете отключить кнопку, которая запускает событие до завершения обработки. – Jashwant

ответ

0

Вы можете использовать event.timeStamp, чтобы определить время между двумя событиями.

$("#something").click(function(event) { 
    this.lastClick = this.lastClick || 0; 

    if(event.timeStamp - this.lastClick > 200) { 
     // do something 
     alert('click'); 
    } else { 
     // last click occured below 200ms, set out `lastClick` to the current timestamp 
    } 

    this.lastClick = event.timeStamp; 
}); 

Я немного неаккуратно здесь, хранение lastClick на элементах DOM объекта представления. Возможно, вы захотите перенести эту переменную в более высокую область вашего приложения.

+0

Объясните ??? event.timeStamp> 200 ??? – madhairsilence

+0

@madhairsilence: У меня были некоторые ошибки в коде, обновленные. – jAndy

+0

@jAndy, lastClick действительное свойство?: O – Jashwant

0

Существует негодный способ сделать это.

Иметь глобальную переменную,

Внутри события щелчка, увеличьте его.

Когда достаточное количество кликов накопил, удалить событие щелчка от элемента с помощью $(this) объекта

0

Я модифицирования вы код немного,

var counter =0; 
$("#something").click(function() { 
counter++; 
//alert("Clicked : " + counter); 
}; 

Я надеюсь, что это самый простой способ узнать, сколько раз он щелкнул.

если хотите контролировать щелчки, просто проверить с, если

if(counter >= 1) {...} 

Я думаю, что это будет делать :)

+0

Это не так просто, к сожалению. – Przemek

-1

Используйте .dblclick() (Jquery) - двойной щелчок Используйте .click() (JQUERY) - один клик

Если 1,2 клика достаточно для вашей задачи - используйте их.

Удачи.

+1

Не ответ. Стоит как комментарий – madhairsilence

+0

Это не сработает. – Przemek

Смежные вопросы