如果你对 jquery.nivo.slider.js 做一个小改动,你就可以做到这一点。通过添加下面的代码,您可以创建一个额外的函数,该函数处理 ul 中具有类“nivoMenuControl”的 li 项目上的“mouseenter”事件。
// jquery.nivo.slider.js
// ~line 18
var vars = {
currentSlide: 0,
currentImage: '',
totalSlides: 0,
index: 0, // this one
oldIndex: 0, // this one
running: false,
paused: false,
stop: false,
};
// ~line 220 right after 'For pauseOnHover setting'
// MouseEnter change slide
if(settings.mouseEnterControl){
if($('body').find('.nivoMenuControl')) {
$('.nivoMenuControl').children('li').mouseenter(function(){
if(!vars.running){
oldIndex = index;
index = $(this).index();
}
if(!vars.running && (index != oldIndex)){
clearInterval(timer);
timer = '';
sliderImg.attr('src', vars.currentImage.attr('src'));
vars.currentSlide = index;
nivoRun(slider, kids, settings, 'control');
}
});
}
}
// bottom of file
// Default settings
$.fn.nivoSlider.defaults = {
effect: 'random',
slices: 15,
boxCols: 8,
boxRows: 4,
animSpeed: 500,
pauseTime: 3000,
startSlide: 0,
directionNav: true,
controlNav: true,
controlNavThumbs: false,
mouseEnterControl: false, // This One
pauseOnHover: true,
manualAdvance: false,
prevText: 'Prev',
nextText: 'Next',
randomStart: false,
beforeChange: function(){},
afterChange: function(){},
slideshowEnd: function(){},
lastSlide: function(){},
afterLoad: function(){}
};
然后在 HTML 中你可以这样做:
<div id="menuSlider" class="nivoSlider">
<img src="img/up.jpg" alt="" data-thumb="img/thumb_up.png" />
<img src="img/walle.jpg" alt="" data-thumb="img/thumb_walle.png" />
<img src="img/nemo.jpg" alt="" data-thumb="img/thumb_nemo.png" />
</div>
<ul class="nivoMenuControl">
<li><a href="#">Slide01</a></li>
<li><a href="#">Slide02</a></li>
<li><a href="#">Slide03</a></li>
</ul>
jQuery 需要这些设置:
$('#menuSlider').nivoSlider({
directionNav: false,
controlNav: false,
manualAdvance: true,
mouseEnterControl: true
});