0

jquery スライダーでのナビゲーションなど、いくつかの機能をサポートするための小さな JavaScript があります。最近、ナビゲーション ボタンをクリックすると、本来の動作をするだけでなく、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;の末尾にa を追加します。clickこれにより、ページがhref属性の値に移動できなくなります。

于 2012-11-13T00:06:20.023 に答える