如何制作一个phonegap可选择的可滚动div列表

时间:2013-03-31 16:55:38

标签: events cordova touch selected scrollable

正如标题所说。我想在div中列出div元素。我希望能够上下滚动列表,当列表不再滚动时,我希望能够点击列出的元素做某事。我无法弄清楚如何做到这一点。

每当用户触摸div时都会执行touchmove事件,即使div正在滚动。我不知道如何让程序知道div不再滚动,所以元素的下一次触摸将触发不可滚动的事件......

编辑:

到目前为止,我所拥有的是......但这是一个快速的“修复”,它不能按预期工作。例如,如果你快速上下滚动,那么div会认为你按下了其中一个元素..

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');
        }

    });

1 个答案:

答案 0 :(得分:0)

好的,所以我终于想出了这个。为什么我无法解决这个问题的原因,因为我无法得到其他事件然后eventstart和事件结束工作...在写作的时候我仍然无法使eventcancel和eventleave等其他事件发挥作用。然而,eventmove工作,我使用此事件解决了问题。当移动手指时,eventmove会不断更新其链接的元素。然后我有一个touchmove变量,如果我正在滚动我的div(使用touchmove事件),它将一直为真。当我停止移动时,我可以再次clik on selected元素并使用正常的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;
                                 });
}