从函数中排除元素

时间:2015-01-21 23:04:22

标签: jquery html

每当我点击一个标签时,由于下面的代码,该窗口在点击后向下滚动。如何保留平滑滚动代码,同时排除下面的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的函数 - 但是完全删除了该函数(因为它应该有)。

1 个答案:

答案 0 :(得分:1)

您可以将.not与属性选择器一起使用以排除元素

$('ul.nav a, .smooth').not('[role="tab"]').on('click', function() {. ..