0


我在这里找到了一个代码,让鼠标点击并滚动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); }
                });
            }
        }

谢谢

4

2 回答 2

0

这有点猜测,但我认为由于您只是捕获 mousedown,因此使用它是不够的e.preventDefault(),但您可能还需要使用它e.stopImmediatePropagation()来防止其他事件处理程序被触发(即 Click 事件)

于 2011-05-31T19:46:09.020 回答
0

您需要在点击时专门防止Default()。你应该能够做这样的事情:

$('#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 函数中。

于 2011-05-31T20:53:01.337 回答