#jquery #html #css
#jquery #HTML #css
Вопрос:
Я пытаюсь выделить ссылку в липком заголовке, который соответствует div, который в данный момент прокручивается. Я изо всех сил старался найти решения в сети, но ничего не нашел. Возможно, я использовал неправильные ключевые слова, поэтому простите меня, если на это уже был дан ответ. Я также знаю о Scrollspy Bootstrap, однако что-то на моем веб-сайте мешает ему работать. О боже … что-то пошло не так.
В любом случае я был бы признателен, если бы вы могли взглянуть на следующую скрипку: http://jsfiddle.net/Eh5L9/9 /
$(window).scroll(function () {
$(".panel").each(function() {
var eidee = this.attr('id'),
thetop = this.offset().top,
thebottom = this.offset.top this.height();
if ($(document).scrollTop() > thetop amp;amp; $(document).scrollTop() < thebottom) {
$('#menu link' eidee).addClass('bla');
}
else {
$('#menu link' eidee).removeClass('bla');
}
});
});
Комментарии:
1. знаете ли вы, что мешает Scrollspy работать? повторное изобретение колеса отстой.
2. ну, для начала, ваше
$('.panel').each(function()
слово написано неправильно3. у вас много-много подсказок.. подчеркивание вместо подчеркивания, функция вместо функции, attr(‘id’) вместо id, не добавлен jquery, $(this) вместо this и многое другое.. вы можете просто удалить этот javascript..
4. @dave-briand Я думаю, что это как-то связано с этим:
5. @gulty как иронично, что ваше написание
typo
само по себе является опечаткой
Ответ №1:
помимо множества опечаток, здесь есть рабочая скрипка: http://jsfiddle.net/Eh5L9/6 /
Я изменил меню CSS, чтобы оно отображалось внизу, чтобы вы могли видеть, что оно работает. Тем не менее, есть лучший способ написать этот код — он все равно работает..
JS:
$(window).scroll(function() {
$(".panel").each(function(){
var eidee = $(this).attr('id'),
thetop = $(this).offset().top,
thebottom = $(this).offset().top $(this).height();
if ($(document).scrollTop() > thetop amp;amp; $(document).scrollTop() < thebottom) {
$('#menu').find('#link' eidee).addClass('bla');
}
else {
$('#menu').find('#link' eidee).removeClass('bla');
}
});
});
Комментарии:
1. аккуратнее — это, очевидно, работает, поэтому оно горит — формулировка плохая (например, eidee) — также по соображениям совместимости было бы лучше не изобретать велосипед. это всего лишь небольшая функция, поэтому все в порядке 🙂 и кстати. вы можете пометить вопрос как отвеченный — не требуется повышение голоса 🙂
2. вот та же скрипка с позицией, установленной на фиксированную и верхнюю вместо абсолютной. jsfiddle.net/Eh5L9/10