Mam kotwicę, która używa zdarzenia jQuery .click, aby uruchomić kilka funkcji.
jQuery(document).ready(function(){
jQuery('a.slide_circ').click(function(){
do_all_functions();
return false;
});
});
Oto kod w skrócie. Działa tak, jak musi, każde kliknięcie na klasę zakotwiczenia slide_circ start do_all_functions.
Ale mam tam problem. Jeśli użytkownik kliknie dwa razy, uruchomi 2 lub więcej razy funkcje... I jak pomysł idzie do diabła.
Myślę, że muszę w jakiś sposób wyłączyć podwójne kliknięcie lub ustawić limit czasu dla mojej funkcji, aby nie działała za każdym razem. Czy ktoś może mi pomóc ?
3 odpowiedzi
Użyj metody .data
, aby przypisać stan do elementu. Następnie użyj setTimeout
, aby zresetować stan:
jQuery(document).ready(function() {
jQuery('a.slide_circ').click(function() {
var $this = jQuery(this);
if ($this.data('activated')) return false; // Pending, return
$this.data('activated', true);
setTimeout(function() {
$this.data('activated', false)
}, 500); // Freeze for 500ms
do_all_functions();
return false;
});
});
Kilka sposobów, aby to zrobić, ale jeden to:
jQuery(document).ready(function(){
var do_all_functions_running = false;
jQuery('a.slide_circ').click(function(){
if (!do_all_functions_running) {
do_all_functions_running = true;
do_all_functions();
do_all_functions_running = false;
}
return false;
});
});
Nie idealnie, ale zadziała.
Możesz sprawdzić ostatnią datę biegu i anulować, jeśli była mniej niż pół sekundy temu:
jQuery(document).ready(function() {
jQuery('a.slide_circ').each(function() {
var lastRun = null;
$(this).click(function() {
if(lastRun && new Date() - lastRun < 500) {
// Less than 500ms; ignore.
return false;
}
// Set the last run:
lastRun = new Date().getTime();
// Continue:
do_all_functions();
return false;
});
});
});
Ma tę zaletę, że jest nieco bardziej wydajny.
Podobne pytania
Powiązane pytania
Nowe pytania
jquery
jQuery to biblioteka JavaScript, rozważ także dodanie tagu JavaScript. jQuery to popularna biblioteka JavaScript działająca w różnych przeglądarkach, która ułatwia przechodzenie przez Document Object Model (DOM), obsługę zdarzeń, animacje i interakcje AJAX, minimalizując rozbieżności między przeglądarkami. Pytanie oznaczone tagiem jQuery powinno być powiązane z jQuery, więc jQuery powinno być używane przez dany kod i przynajmniej elementy związane z użyciem jQuery muszą znajdować się w pytaniu.