导航到具有与click元素的data-id数据属性相同的id的元素
navigate to the element that has an id same to the data-id data attribute of the click element
我目前正在制作一个类似"一页"概念的网页,我遇到了我希望用户视图导航到指定元素的地方,其id等于当前单击元素的data-id属性。
导航div(我更喜欢用div来满足我自己的需求)
<div class="extend clear navigator">
<div class="navigator_nav extend align_left margin_right5px" id="tes1">Test 2</div>
<div class="navigator_nav extend align_left margin_right5px" id="tes2">Test 2</div>
<div class="navigator_nav extend align_left margin_right5px" id="tes3">Test 3</div>
</div>
和内容元素
<div class="page_content container extend clear" data-id="test1">Test 1 container</div>
<div class="page_content container extend clear" data-id="test2">Test 2 container</div>
<div class="page_content container extend clear" data-id="test3">Test 3 container</div>
因此,如果单击具有"test1"的id的div,然后导航到具有test1的id的元素(向上/向下滚动,无论该元素位于有一个id相同的当前单击元素数据属性名称data-id)任何想法如何使它?
实际上,相反的做法要容易得多——在导航栏上设置data-id
属性,在要滚动到的元素上设置简单的id
属性。这样,就可以通过将location.hash
设置为按钮的data-id
来完成:
$(".navigator_nav").click(function (elem) {
location.hash = $(elem).data(id);
}
更重要的是,它允许你在必要时创建另一个导航(你不能在你的解决方案中这样做,因为id必须是唯一的)。
作为旁注,如果您不必使用div进行导航,则可能根本没有JS:
<div class="extend clear navigator">
<a class="navigator_nav extend align_left margin_right5px" href="#test1">Test 2</a>
<a class="navigator_nav extend align_left margin_right5px" href="#test2">Test 2</a>
<a class="navigator_nav extend align_left margin_right5px" href="#test3">Test 3</a>
</div>
参见jQuery滚动到元素
要动态选择data-id
与所单击元素的id
匹配的div,您可以通过属性div[data-id=" + id + "]"
$(".navigator_nav").click(function() {
var id = $(this).attr('id');
$('html, body').animate({
scrollTop: $("div[data-id=" + id + "]").offset().top
}, 2000);
});
尝试使用锚代替,即正常的a与href,它指向id:
<a class="extend clear navigator">
<a class="navigator_nav extend align_left margin_right5px" href="#tes1">Test 2</a>
<a class="navigator_nav extend align_left margin_right5px" href="#tes2">Test 2</a>
<a class="navigator_nav extend align_left margin_right5px" href="#tes3">Test 3</a>
相关文章:
- 使用数据属性将HTML数据复制到另一个元素
- 使用jQuery获取第N个元素的数据属性值
- 按数据属性循环元素并替换值
- 选择数据属性日期值早于当前服务器日期的元素
- 将数据属性从锚点元素传递到jQuery函数
- 查找具有特定数据属性jQuery的元素
- 获取所有匹配元素的数据属性
- 使用jQuery,如何在元素上或元素内查找数据属性?(树遍历)
- 当通过Jquery data()附加时,以及当直接通过HTML中的数据属性附加时,检查HTML元素中的数据()
- 使用数据属性滚动到元素
- 通过特定的数据属性获取元素
- 获取 html 元素的点击事件的数据-* 属性
- 检索具有特定数据属性的祖先元素
- jQuery 查找没有数据属性的元素
- Meteor.js:如何检索事件对象的父元素的数据属性
- jQuery 选择器,用于通过比较元素的两个数据属性来选择元素
- 将从元素的数据属性获取的字符串转换为 json
- j查询如何将值从输入字段设置为其他元素数据属性
- 插入HTML表格行"标题"基于动态可见元素数据属性的研究
- 查找具有与另一个元素数据属性匹配的id的元素的最佳方法