Я пытаюсь написать многоразовый бит кода для прикрепления событий прокрутки к клику на различные узлы DOM с использованием атрибутов данных. Вот то, что я до сих пор:jQuery функция щелчка не установлена правильно
HTML
<li class="scroll-to-anchor" data-dest='top'></li>
<div id='top'></div>
JS
if ($('.scroll-to-anchor').length) {
$('.scroll-to-anchor').each(function() {
var instance = $(this);
if ($(this).attr('data-dest')) {
var destination = $(this).data('dest');
if ($('#' + destination).length) {
instance.click(function() {
alert('click');
// Scroll to destination
})
} else {
throw 'Not a valid scroll-to anchor'
}
} else {
throw 'No data attribute present'
}
});
}
Как вы можете видеть, функция должна:
- Проверьте, если существуют любые узлы .scroll-to-anchor
- Если они делают, запускать их через каждый
- Проверьте, .scroll к якорю имеет атрибут данных Dest
- Если это произойдет, убедитесь, что атрибут соответствует узлу DOM
- , если он прилагается событие click
Все работает нормально, но событие click не прилагается. У меня есть ощущение это сфера связаны, но я не могу понять это ...
Значит, у вас есть элемент с верхом ID во время проверки? В любом случае, вам необходимо предоставить реплицируемость MCVE –
@ A.Wolff Yup, иначе она выкинет ошибку. –
вам не нужно использовать циклы для присоединения любых событий с jquery. Вы можете напрямую связать его с именем класса. –