Как непрерывно повторять триггер при наведении курсора или при наведении курсора? - PullRequest
1 голос
/ 20 января 2011

У меня есть следующий скрипт, который работает.

Если я наведу курсор мыши на ссылку в «.sample», произойдет «щелчок».

Как мне добиться, чтобы этот щелчок непрерывно срабатывал (своего рода цикл)?

$jq('.sample a').mouseover(function(){
    $jq(this).trigger('click');
    return false;
});

Я попробовал следующее, которое не работает (щелчок срабатывает только один раз, а затем останавливается):

$jq('.sample a').mouseover(function(){
    setInterval(function() { $jq('.nav-sub-browser a').trigger('click'); }, 100);
});

Я также попробовал следующее решение, которое я нашел в stackoverflow. Но этот тоже вызывает клик только один раз:

function triggerClick() {
    $jq('.nav-sub-browser a').trigger('click');
}
var interval;
$jq('.nav-sub-browser a').hover(function() {
    interval = setInterval(triggerClick(), 100);
},
function() {
    clearInterval(interval);
});

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 20 января 2011

Вы пробовали просто нажать? Или есть конкретная причина, по которой вы используете триггер?

var myInterval = false;
$('.sampleA').mouseover(function(){
   myInterval = setInterval(function(){
       $('.nav-sub-browser a').click();
   }, 100);
});

$('.sampleA').mouseout(function(){
   clearInterval(myInterval);
   myInterval = false;
});

Вот jsFiddle, который демонстрирует, что: http://www.jsfiddle.net/jbenson/dpC7W/

2 голосов
/ 20 января 2011

Вам нужно передать ссылку на функцию в setInterval, поэтому избавьтесь от конечного () после triggerClick:

function triggerClick() { 
    $jq('.nav-sub-browser a').click();
} 

var interval; 
$jq('.nav-sub-browser a').hover(function() { 
    interval = setInterval(triggerClick, 100); 
}, function() {
    clearInterval(interval); 
});
...