2015-03-10 4 views
0

Код jquery ниже позволяет мне прокручивать ссылку, например #link на моей странице. Но теперь у меня есть три специальные ссылки: # tab-1 # tab-2 # tab-3, которые не должны включаться в этот скрипт scrollto, просто ничего не делайте. Я не могу понять, как исключить конкретный # из этого скрипта.Исключить конкретное # из scrollTo Animation в jquery

Благодарим за помощь!

$('a[href^="#"]').on('click',function (e) { 
    e.preventDefault(); 

    var target = this.hash; 
    var $target = $(target); 

    $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top-80 //offset -80 for navigation height 
    }, 900, 'swing'); 
}); 
+0

Просто добавьте 'var special = ['# tab-1', '# tab-2', '# tab-3'];' затем перед определением '$ target' do' if ($ .inArray (this. hash, special)> -1) {return; } '. – Joe

ответ

1

Я хотел бы изменить свой код на этот:

var special = ['#tab-1', '#tab-2', '#tab-3']; 

$('a[href^="#"]').on('click',function (e) { 
    e.preventDefault(); 

    var target = this.hash; 

    if($.inArray(target, special) > -1) return; 

    var $target = $(target); 

    $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top-80 
    }, 900, 'swing'); 
}); 

Это определяет массив 'специальных' значений, что хэш не может равняться. $.inArray() используется для проверки того, соответствует ли текущий хэш одному из значений в массиве special. Если это произойдет, оно вернется и код ниже не будет выполнен.

Другой пример каруселью в Bootstrap:

var special = ['#carousel-example-generic']; 
$('a[href^="#"]').on('click',function (e) { 
    e.preventDefault(); 

    var target = this.hash; 
    if($.inArray(target, special) > -1) return; 
    var $target = $(target); 

    $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top 
    }, 500, function() { 
     window.location.hash = target; 
    }); 
}); 
0

попробовать:

var special = ['#tab-1', '#tab-2', '#tab-3']; 

$('a[href^="#"]').on('click',function (e) { 
    e.preventDefault(); 

    var target = this.hash; 
    var $target = $(target); 
    if($.inArray(target, special) > -1){ 
     $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top-80 //offset -80 for navigation height 
     }, 900, 'swing'); 
    } 
}); 
0

Спасибо всем! Мне было явно поздно вчера для меня :) Ответ Джо отлично работает с любым заданным # параметром, который я включаю в специальный список var. Таким образом, он идеально подходит для динамических шаблонов.

Еще раз спасибо!

 Смежные вопросы

  • Нет связанных вопросов^_^