gpt4 book ai didi

具有数据属性的 jQuery ScrollTO

转载 作者:行者123 更新时间:2023-12-03 22:47:02 27 4
gpt4 key购买 nike

我真的需要帮助解决这个问题,我对 JS 的了解不是很好。所以,基本上我想在单击链接时滚动到该部分,但不是通过 (href="#target"),我想使用属性来完成此操作。另外,如果可能的话,我也想添加从顶部的属性偏移量。请看一下代码,您会更清楚。

HTML 示例:

<nav>
<a href="#" data-attr-scroll="#section1" class="scrollto">Section 1</a>
<a href="#" data-attr-scroll="#section2" class="scrollto">Section 2</a>
<a href="#" data-attr-scroll="#section3" class="scrollto">Section 3</a>
<a href="#" data-attr-scroll="#section4" class="scrollto">Section 4</a>
<a href="#" data-attr-scroll="#section5" class="scrollto">Section 5</a>
</nav>

<div class="test" id="section1">
#1 Section
</div>
<div class="test" id="section2" data-scroll-offset="100">
#2 Section
</div>
<div class="test" id="section3">
#3 Section
</div>
<div class="test" id="section4" data-scroll-offset="200">
#4 Section
</div>
<div class="test" id="section5" data-scroll-offset="300">
#5 Section
</div>

JS 示例:

    jQuery(document).ready(function($) {
$(".scrollto").click(function(event) {
event.preventDefault();

var defaultAnchorOffset = 0;

var $anchor = $(this).attr('data-attr-scroll');

var anchorOffset = $anchor.attr('data-scroll-offset');
if (!anchorOffset)
anchorOffset = defaultAnchorOffset;

$('html,body').animate({
scrollTop: $anchor.offset().top - anchorOffset
}, 500);
});
});

CSS 示例:

    nav {
position: fixed;
top: 20px;
right: 20px;
}
.test {
height: 500px;
}

我知道 JS 代码很糟糕。如果有人能帮助我,我将非常感激。

提前谢谢您。

问候,丹尼

<强> Fiddle Demo

最佳答案

在这里,我宁愿采用 id 的字符串表示形式并连接选择器,它工作得很好!

    jQuery(document).ready(function($) {
$(".scrollto").click(function(event) {
event.preventDefault();

var defaultAnchorOffset = 0;

var anchor = $(this).attr('data-attr-scroll');

var anchorOffset = $('#'+anchor).attr('data-scroll-offset');
if (!anchorOffset)
anchorOffset = defaultAnchorOffset;

$('html,body').animate({
scrollTop: $('#'+anchor).offset().top - anchorOffset
}, 500);
});
});

我认为它不起作用,因为你试图从字符串中转换对象

这是一把 fiddle ,玩得开心!

http://jsfiddle.net/JcEb3/1/

关于具有数据属性的 jQuery ScrollTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21531542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com