jQuery preventDefault不阻止锚点';行为
我有一个菜单,可以过滤类别,隐藏或显示单击的任何类别。过滤工作正常,但由于某些原因,我无法停止锚的默认行为。锚定有一个“#”,每次单击它都会将您带到页面顶部,这不是一个好的用户体验。我需要它保持在原处,以便在不将用户移动到页面顶部的情况下进行过滤。任何帮助都将不胜感激。谢谢 以下是我的jquery:jQuery preventDefault不阻止锚点';行为,jquery,preventdefault,Jquery,Preventdefault,我有一个菜单,可以过滤类别,隐藏或显示单击的任何类别。过滤工作正常,但由于某些原因,我无法停止锚的默认行为。锚定有一个“#”,每次单击它都会将您带到页面顶部,这不是一个好的用户体验。我需要它保持在原处,以便在不将用户移动到页面顶部的情况下进行过滤。任何帮助都将不胜感激。谢谢 以下是我的jquery: $(".portfolio-nav li:first-child").addClass("active"); //Filter through Categories $(".portfolio-na
$(".portfolio-nav li:first-child").addClass("active");
//Filter through Categories
$(".portfolio-nav ul li a").click(function(e){
e.preventDefault();
//Add class active to the nav item
$(".portfolio-nav li").removeClass("active");
$(this).parent().addClass("active");
//Get the filter data
var filter = $(this).data('filter');
//set 'All' filter value
if(filter == '*'){
filter = 'category';
}
//Hide all categories
$(".categories").children("div").not('.'+filter).css({'width':'0', 'height':'0', 'opacity':'0', 'padding':'0', 'margin':'0'});
//Fade In filters after categories fade out
$(".categories").children('.'+filter).css({'width':'48%', 'height':'300px', 'opacity':'1', 'padding':'0', 'margin':'1%'});
});
这是我的标记:
<div class="portfolio-nav block row">
<ul class="inline center block">
<li class="pills slow">
<a href="#" data-filter="*">
All
</a>
</li>
<li class="pills slow">
<a href="#" data-filter="websites">
Websites
</a>
</li>
<li class="pills slow">
<a href="#" data-filter="ecommerce">
E-Commerce
</a>
</li>
<li class="pills slow">
<a href="#" data-filter="apps">
Apps
</a>
</li>
<li class="pills slow">
<a href="#" data-filter="tools">
Tools
</a>
</li>
</ul>
</div>
-
-
-
-
-
有一个解决方法,您可以在之后放置#a(href=“#a”)或任何您想要的字母,当您单击它时,它不会将您带到页面顶部。main.js第93行的这段代码似乎导致锚标记跳到页面顶部:
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++) {
if(!a[i].onclick && a[i].getAttribute("target") != "_blank") {
a[i].onclick=function() {
window.location=this.getAttribute("href");
return false;
}
}
}
你就可以走了 该处理程序中是否有其他JavaScript正在为您执行?这把小提琴拉得很好哇!我不明白。为什么它在网站上不起作用。其他一切都在起作用,只是那些把你带到顶端的锚。试试这个网站,你会明白我的意思。vallgroup.com在公文包上,就在笔记本电脑下(你会明白我的意思)。谢谢你的帮助!你试过我的解决方案吗?嘿,tcj,我试过了,而且很有效!谢谢我仍在试图弄清楚为什么仅仅使用jQuery无法正常工作。你以前有过这种情况吗?我讨厌问题或bug无法解决时使用它。是的,我发现这个修复很好,所以我总是在需要时使用它,你能在下面找到我的答案,这样它就能帮助其他可能有相同问题的开发人员吗?谢谢。哦,老兄!!非常感谢你!你是对的。我一直在一遍又一遍地检查代码,但一直没有注意到这一点。再次感谢@user3324581 Sure thing=D。有机会请接受答案,祝你好运!
a[i].onclick=function() {
if(this.getAttribute("href") !== '#') {
window.location=this.getAttribute("href");
return false;
}
}