0

タイトルの通りです。div内にdiv要素のリストを作りたいです。リストを上下にスクロールできるようにしたいのですが、リストがスクロールしなくなったときに、リストされた要素をクリックして何かを実行できるようにしたいと考えています。これを行う方法がわかりません。

touchmove イベントは、div がスクロールしている場合でも、ユーザーが div に触れるたびに実行されます。次に、divがもうスクロールしていないことをプログラムに知らせる方法がわかりません。そのため、要素を次にタッチすると、スクロールできないイベントがトリガーされます.....

編集:

私がこれまでに持っているのはこれです...ただし、これは簡単な「修正」であり、意図したとおりに機能しません。たとえば、上下にすばやくスクロールすると、div は要素の 1 つを押したと見なします。

ExerciseWrapper は、スクロール div 内の要素です。各要素は、exerciseWrapper にラップされます。

$('.exerciseWrapper').on('touchstart',function(){

        touchstart=true;
                setTimeout(function(){

                    touchstart=false;           
                    }, 100); 

    });

    $('.exerciseWrapper').on('touchend',function(){

        if(touchstart)
        {
                $('.exerciseWrapper').not(this).css('border-color','black');
                $(this).css('border-color','orange');
        }

    });
4

1 に答える 1

0

わかりましたので、ようやくこれを理解しました..これに関する解決策に頭を悩ませることができなかった理由は、他のイベントを取得できず、eventstartとevent endが機能しなかったためです...執筆時点では、まだ取得できませんeventcancel や eventleave などの他のイベントが機能します。ただし、eventmove は機能し、このイベントを使用して問題を解決しました。eventmove は、指を動かすと、リンクされた要素を更新し続けます。次に、divをスクロールしている場合(touchmoveイベントを使用)、常にtrueになるようにtouchmoveの変数がありました。移動を停止すると、選択した要素を再度クリックして、通常の eventstart イベントを使用できます。これは私の作業コードです。

var touchmove=false;
function AddExercisesEvents()
{
    $('#exerciseMenu').on('touchmove',function(){

            touchstart=true;    
                        $('h1').text("move");

        });

    $('.exerciseWrapper').on('touchend mouseup',function(event){
                    event.stopPropagation();
                    event.preventDefault();
                    //  $('.exerciseWrapper').off();

                if(event.handled !== true)
                {
            touchstart=false;

            //ENTERING editExercise Menu..!
            if(!touchstart)
                {
        //insert magic here 
                                alert($(this).attr('id'));


                }


                }
                    return false;
                                 });
}
于 2013-04-01T00:24:40.397 に答える