每当我点击一个标签时,由于下面的代码,该窗口在点击后向下滚动。如何保留平滑滚动代码,同时排除下面的html(或使用函数中的jQuery选择器)?
我有这段代码:
//smooth-scrolling
$(function() {
$('ul.nav a, .smooth').bind('click',function(event){
var $anchor = $(this);
// $("li[role='presentation'] > a") <- Remove this from the scrollTop fn
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top
}, 1500,'easeInOutExpo');
event.preventDefault();
});
});
我不确定如何检查这是否是传入的元素,因为.bind()
事件附加到我点击的内容上:
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#focus" aria-controls="focus" role="tab" data-toggle="tab">Test Tab</a></li>
</ul>
我知道:not()
选择器,但我不确定如何在这种情况下使用它(或者在哪里放置它,如果它是正确的路径)。我可能会使用类似:not("role=tablist")"
的东西(?),但我不知道该把它放在哪里。
我尝试在所选元素上使用if
语句,但似乎没有正确捕获它。我添加了一个在scrollTop
命中之前返回undefined的函数 - 但是完全删除了该函数(因为它应该有)。
答案 0 :(得分:1)
您可以将.not
与属性选择器一起使用以排除元素
$('ul.nav a, .smooth').not('[role="tab"]').on('click', function() {. ..