Estoy trabajando en las pestañas ui creadas usando jQuery. Todo funciona, excepto por un problema: hice un setInterval que ejecuta una función que hace un disparador ("clic") para que pase a la siguiente pestaña después de 5000 milisegundos. Se ejecuta a través de cada pestaña fina, el problema es que si el usuario hace clic manualmente en una pestaña, el temporizador de setInterval no se reinicia en 0. Por ejemplo, si un usuario comenzara en tab1 a 0 milisegundos y haga clic en tab2 en 2000 milisegundos, el setInterval no vuelve a 0, comenzaría en 2000 y se ejecutaría a 5000 milisegundos y posteriormente iría a tab3. Entiendo por qué está sucediendo, solo me pregunto si hubo una manera de reiniciar la sincronización de setInterval sin tener que hacer un clearInterval() y crear un setInterval() completamente nuevo. Cualquier idea sería apreciada.Reiniciar un setInterval() en Javascript/jQuery (sin clearInterval)
actualización
Gracias por las respuestas - La razón por la que estaba tratando de evitar el uso de clearInterval era porque estaba teniendo problemas de la forma de escribir el código de una manera en la clearInterval detendría el setInterval por completo. El código está configurado para rastrear cada vez que un usuario ha hecho clic en una pestaña. El problema es que la función de cambio automático utiliza el disparador ('clic'), por lo que ejecuta la función clearInterval que escribí también cuando las pestañas se cambian automáticamente. Parece funcionar bastante bien por sí mismo, pero una vez que el usuario comienza a hacer clic en las pestañas, el setInterval se comporta de manera inusual y cambia las pestañas de forma impredecible. Sospecho que lo que está sucediendo es que varios setIntervals se están ejecutando a la vez ... Aquí está el código (si no lo has adivinado ya, soy bastante nuevo en javascript/jquery). He comentado partes para que sea funcional, pero todavía no funciona como pretendía (desde la primera publicación).
// auto change tabs
if(options.interval) {
function timerCom() {
if(!$(".controller").hasClass('paused')) {
var i = $(".tab-current > a").attr("rel");
//alert(i);
if(i == 3) {i = 0};
$container
.find('a')
.eq(i)
.trigger('click');
}
}
//$("#promo-items > li > a").click(function() {
//var timer;
//if(timer != null) {clearInterval(timer);}
timer = setInterval(timerCom, options.interval);
//});
}
¡Bienvenido a SO!Por favor, solo edite su pregunta si necesita proporcionar información adicional. Use comentarios para preguntas específicas sobre respuestas. SO no es un foro, el campo de respuesta está estrictamente reservado para las respuestas a la pregunta. –