Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在带主干的touchstart上停止触发touchend事件_Javascript_Backbone.js_Views_Touch - Fatal编程技术网

Javascript 如何在带主干的touchstart上停止触发touchend事件

Javascript 如何在带主干的touchstart上停止触发touchend事件,javascript,backbone.js,views,touch,Javascript,Backbone.js,Views,Touch,我正在使用主干网编写一个应用程序,已经到了一个完全的关键点,似乎无法发现touchstart第二次触发了touchend事件 第一次点击“.slider”div时,一切都很好。但是,当我第二次触摸屏幕移动幻灯片时,它会立即启动touchend功能,而不是等待touchend事件。有没有一种处理触摸事件和脊椎的特殊方法 以下是我的查看代码: navigateTouch :function (event) { event.preventDefault(); var xOrigPos

我正在使用主干网编写一个应用程序,已经到了一个完全的关键点,似乎无法发现touchstart第二次触发了touchend事件

第一次点击“.slider”div时,一切都很好。但是,当我第二次触摸屏幕移动幻灯片时,它会立即启动touchend功能,而不是等待touchend事件。有没有一种处理触摸事件和脊椎的特殊方法

以下是我的查看代码:

navigateTouch :function (event) {
    event.preventDefault();
    var xOrigPos = event.originalEvent.touches[0].pageX;
    var startPos = parseInt($('.slider', this.$el).css('margin-left'));
    var xPos = event.originalEvent.touches[0].pageX;
    var move;
    var stage = this.model.get('stage');
    var extraMargin = parseInt($('.graphic', this.$el).css('margin-right'));
    var movementSize = $('.slide', this.$el).width()+extraMargin;
    var narrativeSize = $('.graphic', this.$el).length;
    $('.slider', this.$el).on('touchmove', function (event) {
        event.preventDefault();
        xPos = event.originalEvent.touches[0].pageX;
        move = (xPos + startPos) - (xOrigPos);
        $('.slider', this.$el).css('margin-left', move);
    });
    $('.slider', this.$el).one('touchend', function (event) {
        alert('fires')
        event.preventDefault();
        $('.slider', this.$el).unbind('touchmove');
        if (xPos < xOrigPos) {
            stage ++;
            $('.slider', this.$el).animate({'margin-left': -(movementSize*stage)});    
        }
        if (xPos > xOrigPos) {
            stage --;
            $('.slider', this.$el).animate({'margin-left': -(movementSize*stage)})
        }
        this.model.set({'stage':stage});
        $('.progress', this.$el).removeClass('selected').eq(stage).addClass('selected');

    });
} 
我的模板呈现出以下内容:

<div class="slide">
     <a href="#" class="button controls left">
     </a>
     <a href="#" class="button controls right">
     </a>
     <div class="slider clearfix">
          {{#each graphic}}
          <div class="graphic">
               <img src="{{image}}" alt="{{alt}}" title="{{graphicTitle}}"/>
          </div>
          {{/each}}
     </div>
     <div class="indicators">
        {{#each graphic}}
        <a href="#" class="button progress"></a>
        {{/each}}
    </div>
</div>

{{#每个图形}
{{/每个}}
{{#每个图形}
{{/每个}}

我有一种感觉,这可能与我如何附加事件有关,但找不到任何关于使用主干在事件内部附加事件的信息

解决了我自己的问题……哇!结果表明,在touchend事件上触发警报会导致在单击“确定”按钮时调用另一个touchstart事件。只在iPhone和iPad上…奇怪。

你好,我也有同样的问题。你是怎么解决的?您必须删除警报吗?只需删除警报即可解决此问题。这是有道理的,因为iphone将触碰警报的触碰事件视为有效事件。
<div class="slide">
     <a href="#" class="button controls left">
     </a>
     <a href="#" class="button controls right">
     </a>
     <div class="slider clearfix">
          {{#each graphic}}
          <div class="graphic">
               <img src="{{image}}" alt="{{alt}}" title="{{graphicTitle}}"/>
          </div>
          {{/each}}
     </div>
     <div class="indicators">
        {{#each graphic}}
        <a href="#" class="button progress"></a>
        {{/each}}
    </div>
</div>