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

ちょっとした推測ですが、マウスダウンをキャプチャしているだけなので、 を使用するだけでは不十分だと思いますが、他のイベントハンドラーも起動しないようにするためe.preventDefault()に使用する必要があるかもしれません(つまり、 Click イベント )e.stopImmediatePropagation()

于 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 に答える