下面的jquery代码让我滚动到页面中类似 #link 的链接。但是现在我有三个特殊的链接,#tab-1 #tab-2 #tab-3 不会包含在这个滚动脚本中,什么都不做。我不知道如何从此脚本中排除特定的#。
感谢您的帮助!
$('a[href^="#"]').on('click',function (e) {
e.preventDefault();
var target = this.hash;
var $target = $(target);
$('html, body').stop().animate({
'scrollTop': $target.offset().top-80 //offset -80 for navigation height
}, 900, 'swing');
});
我会将您的代码更改为:
var special = ['#tab-1', '#tab-2', '#tab-3'];
$('a[href^="#"]').on('click',function (e) {
e.preventDefault();
var target = this.hash;
if( $.inArray( target, special ) > -1 ) return;
var $target = $(target);
$('html, body').stop().animate({
'scrollTop': $target.offset().top-80
}, 900, 'swing');
});
这定义了哈希不能等于的"特殊"值数组。 $.inArray()
用于检查当前哈希是否与 special
数组中的某个值匹配。如果是这样,则返回并且不会执行下面的代码。
引导程序中轮播的另一个示例:
var special = ['#carousel-example-generic'];
$('a[href^="#"]').on('click',function (e) {
e.preventDefault();
var target = this.hash;
if( $.inArray( target, special ) > -1 ) return;
var $target = $(target);
$('html, body').stop().animate({
'scrollTop': $target.offset().top
}, 500, function () {
window.location.hash = target;
});
});
尝试:
var special = ['#tab-1', '#tab-2', '#tab-3'];
$('a[href^="#"]').on('click',function (e) {
e.preventDefault();
var target = this.hash;
var $target = $(target);
if( $.inArray( target, special ) > -1 ){
$('html, body').stop().animate({
'scrollTop': $target.offset().top-80 //offset -80 for navigation height
}, 900, 'swing');
}
});
谢谢大家!对我来说,昨天显然已经很晚了:)乔的回答适用于我包含在 var 特殊列表中的任何给定 #parameter。所以它也非常适合动态模板。
再次感谢!