所以我的JQuery存在一些问题,我想滚动到特定的div。
HTML
<div id="searchbycharacter">
<a class="searchbychar" href="#" id="#0-9" onclick="return false">0-9 |</a>
<a class="searchbychar" href="#" id="#A" onclick="return false"> A |</a>
<a class="searchbychar" href="#" id="#B" onclick="return false"> B |</a>
<a class="searchbychar" href="#" id="#C" onclick="return false"> C |</a>
... Untill Z
</div>
<div id="0-9">
<p>some content</p>
</div>
<div id="A">
<p>some content</p>
</div>
<div id="B">
<p>some content</p>
</div>
<div id="C">
<p>some content</p>
</div>
... Untill Z
JQuery的
我想让代码做的是:点击.searchbychar的点击事件A TAG&gt;获取ID属性值并滚动到该...
$( '.searchbychar' ).click(function() {
$('html, body').animate({
scrollTop: $('.searchbychar').attr('id').offset().top
}, 2000);
});
答案 0 :(得分:75)
Ids应该是唯一的,并且永远不会使用以数字开头的id,而是使用数据属性来设置目标,如下所示:
<div id="searchbycharacter">
<a class="searchbychar" href="#" data-target="numeric">0-9 |</a>
<a class="searchbychar" href="#" data-target="A"> A |</a>
<a class="searchbychar" href="#" data-target="B"> B |</a>
<a class="searchbychar" href="#" data-target="C"> C |</a>
... Untill Z
</div>
关于jquery:
$(document).on('click','.searchbychar', function(event) {
event.preventDefault();
var target = "#" + this.getAttribute('data-target');
$('html, body').animate({
scrollTop: $(target).offset().top
}, 2000);
});
答案 1 :(得分:5)
你可以这样做:
$('.searchbychar').click(function () {
var divID = '#' + this.id;
$('html, body').animate({
scrollTop: $(divID).offset().top
}, 2000);
});
F.Y.I。
.
(点)为类名添加前缀。$( 'searchbychar' ).click(function() {
$('.searchbychar').attr('id')
将返回字符串ID而不是jQuery对象。因此,您无法对其应用.offset()
方法。答案 2 :(得分:3)
这是我的解决方案:
<!-- jquery smooth scroll to id's -->
<script>
$(function() {
$('a[href*=\\#]:not([href=\\#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 500);
return false;
}
}
});
});
</script>
只需使用此代码段,您就可以使用无限数量的哈希链接和相应的ID,而无需为每个哈希链接执行新脚本。
我已经在另一个帖子中解释了它是如何工作的:https://stackoverflow.com/a/28631803/4566435(或者这里是direct link to my blog post)
如需澄清,请与我联系。希望它有所帮助!