在scrollTop上的mousedown:返回false - 问题

时间:2011-05-31 18:34:41

标签: jquery scrolltop mousedown


我在这里找到了一个代码,让鼠标点击并滚动div的内容。但是,当我尝试它时,返回false或preventDefault不会阻止点击,并重新启动页面。你知道我怎么能使这段代码工作吗?警报运行良好,但代码刷新页面:

var scrolling = false;
        $('#cat-diapo').find('#lien-fleche-cat').mousedown(function(e){
               var sous_cat = $(this).parent().prev('.sous-cat');
               //var sous_cat = $('.sous-cat');
               //var direction = '+=';
               //sous_cat.animate({scrollTop: direction + 5}, 10);
                scrolling = true;
                alert('allop');
                //return false;
                e.preventDefault();
                //startScrolling(sous_cat, '+=10');


        })
        /*
        .mouseup(function(){
                scrolling = false;
        });*/


        function startScrolling(obj, param){
            if (!scrolling) {
                obj.stop();
            } else {
                obj.animate({"scrollTop": param}, "fast", function(){
                if (scrolling) { startScrolling(obj, param); }
                });
            }
        }

由于

2 个答案:

答案 0 :(得分:0)

这是一个猜测,但我认为既然你只捕获了mousedown,使用e.preventDefault()是不够的,但你可能需要使用e.stopImmediatePropagation()来保留其他事件解雇的处理程序(即点击事件)

答案 1 :(得分:0)

您需要专门针对点击阻止默认()。你应该可以这样做:

$('#cat-diapo').find('#lien-fleche-cat').bind({
    mousedown: function(){
        var sous_cat = $(this).parent().prev('.sous-cat');
        scrolling = true;
        alert('allop');
    },
    click: function(e){
        e.preventDefault();
    }
});

这只是代码的快速编辑。在mousedown函数中放置您需要的任何内容。