Как я могу нажать непрерывно, пока что-то зависло? - PullRequest
1 голос
/ 12 марта 2010

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

$("#carousel").jCarouselLite({


 vertical: true,
 btnNext: ".btn-down",
 btnPrev: ".btn-up",
 visible:6,
 circular: false

});

$("#carousel .btn-down").hover(function() {

 $("#carousel .btn-down").click();

});

но срабатывает только один раз при наведении курсора, мне нужно, чтобы он непрерывно срабатывал при наведении курсора.

Ответы [ 4 ]

4 голосов
/ 13 декабря 2012

У меня тоже была та же проблема с моим кодом, затем я нашел это решение ..

$(document).ready(function(){
    $("someid1").hover(function a() {  //on hover over some element with id-> someid1  
        $("#someid2").animate({
            width:"+=10" 
        }, function(){
            a();
        });
    }); //execute animation function and call itself again and again on mouseover
});                                                     

$("someid1").mouseout(function() {
    $("#someid2").stop(); //stop the animation on mouseout.
});
});

Это помогло мне. Надеюсь, это поможет вам.

3 голосов
/ 12 марта 2010
var nav = function() {
  $("#carousel .btn-down").click(); // next move
  $("#carousel").data(
    'hover', 
    window.setTimeout(nav, 1000); // continue in 1000 ms
  );
};
$("#carousel .btn-down").hover(
  nav,
  function() {
    window.cancelTimeout ($("#carousel").data('hover')); // stop the navigation
  }
);
3 голосов
/ 12 марта 2010

Вы можете использовать setInterval, чтобы начать запуск события через равные промежутки времени при наведении, и использовать clearInterval, чтобы остановить его, когда пользователь прекращает зависание. Было бы также чётче запускать желаемое поведение вместо того, чтобы вызывать событие щелчка, при условии, что используемый вами плагин поддерживает такой API. Примерно так:

var effectInterval;

$('#carousel .btn-down').hover(function() {
  effectInterval = setInterval(function() {
    $('#carousel').advanceToNextImage(); // sample API call, check your plugin's docs for how it might actually be done
  }, 5000);
}, function() {
  clearInterval(effectInterval);
});
0 голосов
/ 12 марта 2010

Вы можете установить интервал для нажатия, как это, просто сделайте то же самое для противоположной кнопки:

$("#carousel .btn-down").hover(function() {
  $(this).data("to", setInterval(function() { $("#carousel .btn-down").click(); }, 200));
}, function() {
  clearInterval($(this).data("to"));
});
...