0

画像のリストであるdivの「アルバム」の1つをドラッグアンドスクロールしようとしています。

これが私がしたことです

$(album).on({
    mousedown:function(){
        console.log('mousedown');
        $(album).on('mousemove', function(){
            console.log('mousemove')
        })
    }

    mouseup:function(){
        console.log('mouseup');
        $(album).off('mousemove');
    }

})

ここで何が起こっているのかというと、マウスを押した後、「mousemove」を約4〜5回トレースし、その後トレースを停止し、クリックした画像の透明バージョンでアクションアイコンが少し表示されなくなります。次に、ここでマウスを離すと、「マウスアップ」をトレースできません。しかし、divをクリックし、マウスを動かさずに放すと、「mouseup」がトレースされます。

コンソールがマウスの動きを追跡し続けないのはなぜですか?また、マウスアップを追跡しなかったのはなぜですか?ありがとう。

4

2 に答える 2

1

ここに行く男!完全!!

ワーキングフィドル

HTML

<div class='album'></div>

JQuery

$('body').on('mousedown', '.album', function(e){
    e.preventDefault();
    console.log('mousedown');

    $(this).on('mousemove', function(){
       console.log('mousemove');
    });

    $(this).on('mouseup', function(){
       $(this).off('mousemove');
       console.log('mouseup');  
     });

});
于 2012-11-10T02:45:42.120 に答える
0

別の方法でそれを行うとどうなるでしょうか。

var itIsClicked;

$(album).on("mousedown", function(){
    itIsClicked = true;
});

$(album).on('mousemove', function(){
    if(itIsClicked) {
        console.log('mousemove');
    }
});

$(album).on("mouseup", function(){
    itIsClicked = false;
});

イベントのネストは理にかなっているように見えますが、あなたが説明したような問題に遭遇する可能性があります。なぜそれがうまくいかないのかについての理論を聞きたいのですが.

于 2012-11-10T03:59:45.217 に答える