Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery preventDefault不阻止锚点';行为_Jquery_Preventdefault - Fatal编程技术网

jQuery preventDefault不阻止锚点';行为

jQuery preventDefault不阻止锚点';行为,jquery,preventdefault,Jquery,Preventdefault,我有一个菜单,可以过滤类别,隐藏或显示单击的任何类别。过滤工作正常,但由于某些原因,我无法停止锚的默认行为。锚定有一个“#”,每次单击它都会将您带到页面顶部,这不是一个好的用户体验。我需要它保持在原处,以便在不将用户移动到页面顶部的情况下进行过滤。任何帮助都将不胜感激。谢谢 以下是我的jquery: $(".portfolio-nav li:first-child").addClass("active"); //Filter through Categories $(".portfolio-na

我有一个菜单,可以过滤类别,隐藏或显示单击的任何类别。过滤工作正常,但由于某些原因,我无法停止锚的默认行为。锚定有一个“#”,每次单击它都会将您带到页面顶部,这不是一个好的用户体验。我需要它保持在原处,以便在不将用户移动到页面顶部的情况下进行过滤。任何帮助都将不胜感激。谢谢

以下是我的jquery:

$(".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; 
    }
}