2016-03-30 2 views
0

Мой вопрос относится к вопросу this.JQuery mousdown with setInterval бесконечный

На данный момент я использую this answer, но я все еще могу обмануть этот код, поэтому clearInterval не остановится. Удерживая левую кнопку мыши, я просто нажимаю правый, чтобы открыть контекстное меню. Теперь clearInterval не был вызван.

Если я добавлю contextmenu событие в clicker, с clearInterval он будет вызван, но он не очистит интервал.

See this demo

ответ

2

Добавить clearInterval() в mousedown события:

clicker.mousedown(function() { 
    clearInterval(timeout); 
    timeout = setInterval(function() { 
    clicker.text(count++); 
    }, 500); 

    return false; 
}); 

Это будет срабатывать в контекстном меню, и это позволит предотвратить несколько таймеров от работающих одновременно.

Fiddle

+0

Дерьмо, это явно лучше, чем решение пришло мне в голову. Но я оставлю важный бит моего ответа здесь: установка 'setInterval' в var только сохраняет идентифицирующую запись, а не сам интервал. – DBS

+0

Я думал, что ваш ответ был прекрасен и был удивлен, увидев его удаленным. Хорошая точка re "Установка' setInterval' ... " –

+1

Я уже пытался написать комментарий @DBS, потому что я все еще мог« обманывать »быстрыми кликами. Я думаю, что это было вызвано фактом множественного доступа к одной переменной. На данный момент я не могу «обманывать» вас (@RickHitchcock);) – Steckdoserich

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