<li>
Элементы списков не принимают атрибут href
, который можно использовать для <a>
, <base>
, <area>
или <link>
. Лучшая альтернатива для использования в этом случае - добавить пользовательский атрибут данных. Как и data-link
в этом примере
Решение 1: следуйте вашему HTML коду
$("#faqNav li").on('click',function(e) {
// target element id
var id = $(this).data('link');
console.log(id);
// target element
var $id = $(id);
if ($id.length === 0) {
return;
}
// prevent standard hash navigation (avoid blinking in IE)
e.preventDefault();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="faqNav">
<li data-link="#link1">A</li>
<li data-link="#link2">B</li>
<li data-link="#link3">C</li>
</ul>
Решение 2: Обычное использование со ссылками
$("#faqNav a").on('click',function(e) {
// target element id
var id = $(this).attr('href');
console.log(id);
// target element
var $id = $(id);
if ($id.length === 0) {
return;
}
// prevent standard hash navigation (avoid blinking in IE)
e.preventDefault();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="faqNav">
<li><a href="#link1">A</a></li>
<li><a href="#link2">B</a></li>
<li><a href="#link3">C</a></li>
</ul>
Решение 3: Атрибут данных вместе с Ha sh
$("#faqNav a").on('click',function(e) {
// target element id
var id = $(this).data('link');
console.log(id);
// target element
var $id = $(id);
if ($id.length === 0) {
return;
}
// prevent standard hash navigation (avoid blinking in IE)
e.preventDefault();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="faqNav">
<li><a href="#" data-link="#link1">A</a></li>
<li><a href="#" data-link="#link2">B</a></li>
<li><a href="#" data-link="#link3">C</a></li>
</ul>
Это зависит от ваших требований к дизайну, ваших якорей документов (идентификаторов) и ваших потребностей навигации. С действительными идентификаторами вы можете использовать это для управления загрузкой вашей страницы, как в yourpage.html # link1. Таким образом, приоритет переходит к действительному HTML, тогда мы можем настроить и предотвратить значения по умолчанию ...