0

我有一小段 javascript 来支持几个功能,例如我的 jquery 滑块上的导航。最近我注意到,当您单击导航按钮时,它会执行预期的操作,但还会在 URL“#”中创建一个额外的字符。我检查了脚本并找到了添加它的位置和原因,但是单击导航时未添加如何修复它,我不知道。有没有人可以帮助或至少指出我正确的方向。请看下面的完整代码

var fadeTimer;
var slideSpeed = 8000;
jQuery(document).ready(function() {
// add nav buttons
var slideCount = jQuery('#fader ul li').length;

var randomnumber=Math.floor(Math.random()* slideCount);

for ($i = 0; $i < slideCount; $i++) {
jQuery('#faderNav').prepend('<a href="#"><\/a>');
}

jQuery('#faderNav a').eq(randomnumber).addClass('active');
jQuery('#fader ul li').eq(randomnumber-1).addClass('active');

var next = jQuery('#fader ul .active').next();
if (next.length > 0) {

} else {
var next = jQuery('#fader ul li:first');
}

jQuery('#fader ul .active').fadeOut().removeClass('active');
next.fadeIn().addClass('active');

// work out nav width
var navBtn = jQuery('#faderNav a');
var navBtnWidth = navBtn.outerWidth(true);
var navWidth = navBtn.length * navBtnWidth;
// set nav width
jQuery('#faderNav').width(navWidth);
// add negative margin to center the nav
var negMarg = navWidth / 2;
jQuery('#faderNav').css({'margin-left':'-'+negMarg+'px'});

// start timer

var fadeTimer = setInterval("faderTimer()", slideSpeed);


jQuery('#faderNav a').live('click',function() {
clearInterval(fadeTimer);
var index = jQuery(this).index('#faderNav a');
jQuery('#faderNav a').removeClass('active');
jQuery('#faderNav a').eq(index).addClass('active');
jQuery('#fader ul .active').fadeOut().removeClass('active');
jQuery('#fader ul li').eq(index).fadeIn('slow').addClass('active');
});
});


// FADE FUNCTION
function faderTimer() {
var next = jQuery('#fader ul .active').next();
if (next.length > 0) {

} else {
var next = jQuery('#fader ul li:first');
}

var navIndex = next.index('#fader ul li');
jQuery('#faderNav a').removeClass('active');
jQuery('#faderNav a').eq(navIndex).addClass('active');
jQuery('#fader ul .active').fadeOut().removeClass('active');
next.fadeIn('slow').addClass('active');

}
4

3 回答 3

1
$(document).on("click", "a[href=#]", function(e) {
    e.preventDefault();
});

http://jsfiddle.net/RhNDB/show/

于 2012-11-13T00:06:03.977 回答
1

单击锚点href="#"会将哈希符号添加到 url。

使用 preventDefault 或返回 false:

jQuery(document).on('click', '#faderNav a', function(e) {
    e.preventDefault();
    clearInterval(fadeTimer);
    var index = jQuery(this).index('#faderNav a');
    jQuery('#faderNav a').removeClass('active');
                         .eq(index).addClass('active');
    jQuery('#fader ul .active').fadeOut().removeClass('active');
    jQuery('#fader ul li').eq(index).fadeIn('slow').addClass('active');
});
于 2012-11-13T00:06:05.987 回答
1

return false;在处理程序的末尾添加一个click。这将阻止页面导航到href属性的值。

于 2012-11-13T00:06:20.023 回答