2016-01-12 68 views
0

如何在重新調整大小事件時重新初始化HammerJS?如何重新初始化調整大小事件的HammerJS?

我的問題是,當我觸發resize事件的選擇器重置,並使用jQuery匹配容器$('。container')將返回一個索引0所有的時間..在文檔準備工作之前。

$('。container')出現多次,所以它應該在滑動事件中增加。

任何人有任何想法?

$(document).ready(function() { 
    mobileCalculus(animation); 
    swipeActions($('.home-element-wrapper'), $('.home').width()); 

    $(window).on('resize', function() { 
     mobileCalculus(animation); 
    }); 
}); 


function swipeActions(parent, offset) { 
    var curInd = 0; 
    var theThumb = $('.thumb'); 
    var myElement = document.getElementById('main-swipe'); 
    var max = theThumb.length - 1; 

    // create a simple instance 
    // by default, it only adds horizontal recognizers 
    var mc = new Hammer(myElement); 

    // listen to events... 
    mc.on("swipeleft", function(ev) { 

     curInd = $('.thumb.active').index() + 1; 
     if (curInd > max) { 
      curInd = max; 
     } 
     var newML = offset * curInd; 
     theThumb.removeClass('active'); 
     theThumb.eq(curInd).addClass('active'); 
     console.log($('.thumb.active').index() + 1); 
     parent.css({ 
      'margin-left': '-'+newML+'px' 
     }); 
    }); 
    mc.on("swiperight", function(ev) { 
     curInd = $('.thumb.active').index() - 1; 
     if (curInd < 0) { 
      curInd = 0; 
     } 
     var newML = offset * curInd; 
     theThumb.removeClass('active'); 
     theThumb.eq(curInd).addClass('active'); 
     parent.css({ 
      'margin-left': '-'+newML+'px' 
     }); 
    }); 

} 

例如jQuery有一個名爲.off功能,停用之後,我們就可以把新的事件上選擇的事件。

$('element').off('swiperight').on('swiperight') 

回答

0

顯然我已經知道了。我不得不使var mc = new Hammer(myElement);值「全球」。顯然,當我在swipeActions()中第二次重新初始化它時,off()函數將不起作用,所以初始化該值只需執行一次,然後執行off()on(),使所有內容都可以正常工作。

相關問題