单击特定链接时,将不同的偏移量设置为滚动顶部
Set different offset to scrolltop when a specific link is clicked
我现在有下面的代码,它工作得很好,当点击链接时会滚动到div的顶部。。。
$(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}, 1500);
return false;
}
}
});
});
然而,我想做的是,当点击一组特定的链接(#topbannerlinks a)时,它会滚动到div的顶部,但偏移量不同,例如
$("#topbannerlinks a").click(function(){
$('html,body').animate({ scrollTop: target.offset().top -180 }, 1500);
});
我可以在上面的第一个函数中添加build这个函数/if语句吗?
我试着这样做,因为我在目标链接页面上有一个不同高度的标题,而且它不能正确地滚动到顶部。
您可以使用.is()
检查某个元素是否也与另一个选择器匹配。例如,如果您的链接也匹配#topBanner a
,则返回true;如果是另一个链接,则返回false:
$(myLink).is('#topBanner a');
因此,在.click()
函数中,可以使用$(this).is('#topBanner a')
进行此检查。
您不需要在代码中两次使用相同的animate
函数,只需根据链接是否在#topBanner
中设置偏移量,然后始终添加偏移量(无论是0还是180)
if (target.length) {
// set 180 if link is in #topBanner, otherwise 0
var offset = $(this).is('#topBanner a') ? 180 : 0;
$('html,body').animate({scrollTop: target.offset().top - offset}, 1500);
return false;
}
相关文章:
- 添加新数据时D3.JS条形图列偏移量
- 当偏移量改变时滚动顶部
- 引导数据偏移量底部
- 可以在调整窗口大小时重新调整stellar.js的元素偏移量
- 可滚动元素,如何在调整大小时更改顶部偏移量
- 使用JavaScript日期的任何时间的时区偏移量
- jquery 如何设置偏移量 () 值
- 如何使用javascript获取&使用字符偏移量设置插入符号位置
- jQuery平滑滚动到相同页面和其他页面上的ID:如何设置偏移量
- 如何在遍历对象时为setTimeout参数设置固定的时间偏移量
- 获取元素偏移量在设置位置之前返回相同的值:绝对值
- 单击特定链接时,将不同的偏移量设置为滚动顶部
- javascript内容可编辑:将光标设置为字符偏移量
- 缩放dojox.chart .chart时如何设置偏移量
- 如何使用Jquery或JavaScript设置偏移量和平滑过渡到每个部分
- 在任何时间日期选择器中以编程方式设置时区偏移量
- 如何设置scrollTop()的偏移量
- 设置jQuery元素相对于父元素的偏移量
- 设置“天”的偏移量,然后格式化回字符串
- 当页面加载时,会出现平滑滚动,当ID和哈希值设置相同时,偏移量会跳跃