我有这个代码,效果很好。
$('a[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
&& location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html, body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
但我也有一些元素,我不想为它们应用平滑滚动!我该怎么做 ?
示例 - http://codepen.io/zoom/pen/ggYaXZ
我不希望它适用于&lt; li><a href="#apple">Scroll to Section Apple</a></li>
答案 0 :(得分:0)
您可以使用其他data-
属性:
$('a[href*="#"]:not([href="#"]):not([data-no-smooth-scroll])').click(function() {
在html
内添加data-no-smooth-scroll="true"
到相关链接:
<a href="#apple" data-no-smooth-scroll="true">Scroll to Section Apple</a>
这是你的codepen的一个分支:
http://codepen.io/anon/pen/dNbYKe
答案 1 :(得分:0)
你可以制作一个if
语句来删除每个具有某个类的元素的平滑滚动,即class="notThis"
。
在这种情况下,您必须将该类添加到#apple
链接元素:<a class="notThis" href="#apple">Scroll to Section Apple</a>
。
就像这样
$('a[href*="#"]:not([href="#"])').click(function() {
if ($(this).attr("class") !== "notThis"){
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html, body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
}
});