排序项目时,页面移动到屏幕顶部

时间:2013-03-15 13:03:23

标签: jquery html

我正在用jQuery创建一个可排序的产品组合。

问题是;每次我点击我的投资组合项目的过滤器,然后页面滚动到顶部。

有没有办法防止这种情况?

可以在此处查看问题:http://alsite.com.br/flex/produtos.html

我的剧本:

<script type="text/javascript">
    $(document).ready(function(){
        var Portfolio = {
            sort: function(items) {
                items.show();
                $('#portfolio-content').find('div.portfolio-item').not(items).fadeOut(500);
            },
            showAll: function(items) {
                items.fadeIn(500);
            },
            doSort: function() {
                $('a', '#portfolio-sort').on('click', function() {

                    var $a = $(this);
                    if (!$a.is('#all')) {

                        var items = $('div[data-cat=' + $a.data('cat') + ']', '#portfolio-content');

                        Portfolio.sort(items);

                    } else {

                        Portfolio.showAll($('div.portfolio-item', '#portfolio-content'));


                    }

                });
            }
        };

        Portfolio.doSort();     

    });

</script>

我的投资组合代码:

<div id="portfolio">
    <div id="portfolio-sort">
        <a href="#" id="all">TODOS</a>
        <a href="#" data-cat="a">ACM</a>
        <a href="#" data-cat="b">MDF</a>
        <a href="#" data-cat="c">AÇO INOX</a>
        <a href="#" data-cat="b">PVC ESPANDIDO</a>
        <a href="#" data-cat="c">AÇO GALVANIZADO</a>

    </div>
    <div id="portfolio-content">
        <div class="portfolio-item" data-cat="a">A</div>
        <div class="portfolio-item" data-cat="b">B</div>
        <div class="portfolio-item" data-cat="c">C</div>
        <div class="portfolio-item" data-cat="c">C</div>
        <div class="portfolio-item" data-cat="b">B</div>
        <div class="portfolio-item" data-cat="a">A</div>
        <div class="portfolio-item" data-cat="a">A</div>
        <div class="portfolio-item" data-cat="c">C</div>
        <div class="portfolio-item" data-cat="b">B</div>
    </div>

</div>

2 个答案:

答案 0 :(得分:1)

简单地改变:

$('a', '#portfolio-sort').on('click', function() { ...

要:

$('a', '#portfolio-sort').on('click', function(e) { ...

并添加:

e.preventDefault();

-

$('a', '#portfolio-sort').on('click', function() {
    e.preventDefault();

    ...
});

-

这可以防止链接作为链接运行(并将您带到produtos.html#)。

答案 1 :(得分:1)

您需要阻止链接成为链接:)

$('a', '#portfolio-sort').on('click', function(e) {
    // stop being an link!
    e.preventDefault();

    var $a = $(this);

    if (!$a.is('#all')) {
        var items = $('div[data-cat=' + $a.data('cat') + ']', '#portfolio-content');

        Portfolio.sort(items);
    } else {
        Portfolio.showAll($('div.portfolio-item', '#portfolio-content'));
    }
});

更多信息:click