2010-03-12 68 views
1

林相當肯定這有一個簡單的解決方案。我正在使用jCarousellite,並且我想要改變內置的導航按鈕的行爲以將鼠標懸停在上面。如何在徘徊東西時連續點擊?

$("#carousel").jCarouselLite({ 


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

}); 

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

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

}); 

但它只會在mouseover時觸發一次,我需要它在mouseover時繼續觸發。

+0

說明你想要的效果可能是一個更好的開始,連續發出咔嗒聲從來都不是每次詢問時的最佳解決方案。 – 2010-03-12 00:56:35

+0

啊,先生!我希望旋轉木馬在徘徊時移動到下一個項目。使用jCarouselLite的內置功能來計算是最快的解決方案。 – russjman 2010-03-12 01:01:51

回答

3
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 
    } 
); 
+0

這工作完美。我感到驚訝的是,解決方案需要如此完善。隊友的歡呼聲! – russjman 2010-03-12 02:49:14

3

您可以使用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

*請不要在setInterval或setTimeout中使用字符串,這是不好的做法,並且無故添加額外的處理......在這種情況下甚至更長:'setInterval(triggerEffect,5000);' – 2010-03-12 01:08:16

+0

@Nick - Ha,I只是編輯了我的答案以改變它,然後在編輯保存後立即看到您的評論。 – 2010-03-12 01:09:33

+0

'advanceToNextImage'是什麼?我想你在看另一個畫廊插件? – 2010-03-12 01:10:28

0

您可以設置間隔點擊這個樣子,只是做同樣相反按鈕:

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

我也有同樣的問題,我的代碼,然後我想出了這個解決方案..

$(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. 
}); 
}); 

這對我來說伎倆。希望它可以幫助你。