虽然有人问了几次,但我找不到能解决问题的方法。
这是我的平滑滚动代码:
$(function() {
$('a[href*=#]:not([href=#]),a[href*=#]:not(a[data-toggle])').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;
}
}
});
});
这是css-tricks代码,有点编辑。 这是网站:http://redrocketwebsitedesign.co.uk/test/my3DtwinAlpha/about/#arrow6
所以手风琴仍然被选中用于滚动,并且它没有运行手风琴js。
我认为我的javascript没有选择器代码存在问题:
a[href*=#]:not(a[data-toggle])
感谢任何帮助: - ]
答案 0 :(得分:5)
这就是你真正想要的:
$('a[href*="#"]:not([href="#"]):not([data-toggle])').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;
}
}
});
<强>:不使用(数据肘节])强> 是为了避免使用bootstrap tab,carousel等进行平滑滚动...
答案 1 :(得分:0)
您提供的页面代码有误:
$('a[href*=#]:not([href=#]),'a[href^="#"]:not([data-toggle])').click(function() {
^^^ - extra and unnecessary character
所以你的处理程序没有设置。
答案 2 :(得分:0)
您还可以考虑指定应触发平滑滚动动画的元素类(从而排除其他元素,如手风琴标签),如下所示:
$('a[href*=#][class*="smooth"]:not([href=#])').click(function()
反之亦然,指定不应该触发脚本的元素的类(在这种情况下,我们排除触发手风琴效果的链接类):
jQuery('a[href*=#]:not([href*=#][class*="accordion-toggle"])').click(function()
答案 3 :(得分:0)
var headp = $(“。pixxett-header”)。innerHeight(); var stick = $(“。pixxett-header.sticky”)。innerHeight();
$(document).on('click', 'a[href^="#"]:not([href="#"]):not([data-toggle])', function (event) {
event.preventDefault();
if (scroll == 0){
$('html, body').animate({
scrollTop: $($.attr(this, 'href')).offset().top - stick}, 500);
}else{
$('html, body').animate({
scrollTop: $($.attr(this, 'href')).offset().top - headp}, 500);
}
});