每当我单击一个选项卡时,由于下面的代码,该窗口在单击后向下滚动。如何保持平滑的滚动代码,同时排除下面的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命中之前返回未定义的函数,但它完全删除了该功能(正如它应该有的那样)。
发布于 2015-01-21 23:14:58
可以在属性选择器中使用.not来排除元素。
$('ul.nav a, .smooth').not('[role="tab"]').on('click', function() {. ..https://stackoverflow.com/questions/28078532
复制相似问题