0

我正在使用 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>
4

2 回答 2

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#)。

于 2013-03-15T13:11:19.760 回答
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'));
    }
});

更多信息:点击

于 2013-03-15T13:11:21.623 回答