如何让jQuery锚点链接只在指定id区域内的a标签中生效?
之前添加了一个jQuery锚点链接平滑滚动的功能,可是却和后来添加的jQuery的tab选项卡有冲突,因为两者都用到了锚点链接,都是以#号开头,现在想将两者区分开了,希望...
之前添加了一个jQuery锚点链接平滑滚动的功能,可是却和后来添加的jQuery的tab选项卡有冲突,因为两者都用到了锚点链接,都是以#号开头,现在想将两者区分开了,希望能够让jQuery锚点链接平滑滚动的代码只在指定ID的div区域中生效,这样不会影响其他,刻字机弄了半天却搞不定只有求助了。
<script type="text/javascript">
$(function(){
$('a[href*=#],area[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) {
var targetOffset = $target.offset().top-55;
$('html,body').animate({
scrollTop: targetOffset
},
1000);
return false;
}
}
});
})
</script>
上面的代码中是判断整个页面a标签的锚点,现在希望只有指定id的div中点击锚点链接才能生效。
在网上搜了很久,结果只知道用document.getElementById("main-wrap");获取指定id,但无法使代码只在这个id范围内生效,求好心人帮帮忙 展开
<script type="text/javascript">
$(function(){
$('a[href*=#],area[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) {
var targetOffset = $target.offset().top-55;
$('html,body').animate({
scrollTop: targetOffset
},
1000);
return false;
}
}
});
})
</script>
上面的代码中是判断整个页面a标签的锚点,现在希望只有指定id的div中点击锚点链接才能生效。
在网上搜了很久,结果只知道用document.getElementById("main-wrap");获取指定id,但无法使代码只在这个id范围内生效,求好心人帮帮忙 展开
1个回答
展开全部
$(function() {
// 在id是main-wrap的元素中查找a或area,并且他们的href包括#
$("#main-wrap").find('a[href*=#],area[href*=#]').click(function() {
var reg = /^\.?\//;
if (location.pathname.replace(reg, '') == this.pathname.replace(reg, '')) {
var $target = $(this.hash);
$target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']');
if ($target.length) {
var targetOffset = $target.offset().top - 55;
$('html,body').animate({
scrollTop: targetOffset
}, 1000);
return false;
}
}
});
})
追问
万分感谢,折腾了两小时的问题终于找到答案了,之前我自己想先用if(document.getElementById("main-wrap")!=undefined){}判断是否存在,然后将代码写在里面,结果跟原来没什么两样,依然是整个页面的都生效,无法只在指定id范围内生效,看到你的回答终于清楚多了。总之谢谢你了,问题解决了,出门买早餐去0.0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询