如何排除特定的<;部门>;来自javascript
我是一个初学者,我很难找到解决问题的方法。 我有一个网站。我已经使用javascript实现了滚动效果。 代码如下:如何排除特定的<;部门>;来自javascript,javascript,jquery,Javascript,Jquery,我是一个初学者,我很难找到解决问题的方法。 我有一个网站。我已经使用javascript实现了滚动效果。 代码如下: jQuery(function($) { $('a[href*=#]:not([href=#])').click(function() { if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostn
jQuery(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 - 80)
}, 1000);
return false;
}
}
});
$('.nav a').on('click', function(){
$(".navbar-toggle").click()
});
});
问题是它与“证明”部分的内容相冲突。被点击的图像(内部链接)并没有显示与其关联的文本,另一方面,它提供了一种滚动效果
证明部分代码可在此处找到:
如何纠正这一点
附言:我希望我的问题描述清楚:/这不是一个很好的解决方案,但您可以做的是:
$('a[href*=#]:not([href=#]), a[href*=#]:not([href=#daksh]), a[href*=#]:not([href=#anna]), a[href*=#]:not([href=#wafer])')
这将排除您希望用于推荐部分的链接。我建议通过专门应用行为而不是全局应用行为来“帮助”您的javascript
而不是将您的点击行为绑定到页面上的所有链接
$('a[href*=#]:not([href=#])')
尝试将其绑定到具有公共类的锚定标记(在本例中为导航链接
),并将该类分配给导航栏中的每个链接
$('a.nav-link[href*=#]:not([href=#])')
或者至少将此功能仅分配给您的.nav
锚定标记
$('.nav a[href*=#]:not([href=#])')
这样,当您“劫持”导航链接的行为时,页面上的所有其他链接都可以正常运行。是否缺少分号?试试这个:
$('.nav a').on('click', function(){
$(".navbar-toggle").click();
});
我有两个应该适用的解决方案: 停止即时复制 如果您颠倒了单击处理程序的顺序(它们的调用顺序与创建它们的顺序相同),那么将首先调用
.nav a
one,并在其中调用event.stopImmediatePropagation()
。它将阻止调用第二个处理程序
委托处理人
您可以使用事件冒泡和jQuery:设置滚动处理程序,而不是直接在
元素上,例如在
元素上。而不是从返回false
。nav a
处理程序将阻止调用“滚动”处理程序。大致如下所示:
jQuery(function($) {
$('body').on('click', 'a[href*=#]:not([href=#])', function() {
// handler code
});
$('.nav a').on('click', function(){
$(".navbar-toggle").click()
return false; // prevents delegated handler from being called
});
});
在JS中,大多数分号都是可选的。使用它们是一种很好的形式,但上面的情况不会引起问题。很高兴这样做了!别忘了,因为它起作用了