2012-08-13 68 views
5

我有jQuery工具滾動...我喜歡它有觸摸選項實施swipeLeft swipeRight只。jquery工具觸摸水平只能禁用垂直觸摸

當我使用觸摸:真的,它旋轉時swipeUp /下以及..

我也跟着指導這裏:

jQuery Tools Scrollable on touch disable vertical scroll

這裏:

http://awardwinningfjords.com/2010/09/22/handling-touch-events-in-jquery-tools-scrollable.html

但似乎沒有工作..任何想法?我的小提琴/演示低於參考

小提琴:http://jsfiddle.net/mmp2m/7/

演示:http://jsfiddle.net/mmp2m/7/show

感謝

回答

5

如果您正在使用的唯一控制是滾動,那麼你可以編輯它的源代碼爲here,可以修復該行爲或按照您認爲合適的方式進行修改。

我修改了fiddle您已經發布到包括在JavaScript代碼段滾動控件的代碼。

在控件的代碼添加的行與下面的代碼片斷評論// added在末尾的:

// touch event 
    if (conf.touch) { 
     var touch = {}; 

     itemWrap[0].ontouchstart = function(e) { 
      var t = e.touches[0]; 
      touch.x = t.clientX; 
      touch.y = t.clientY; 
     }; 

     itemWrap[0].ontouchmove = function(e) { 

      // only deal with one finger 
      if (e.touches.length == 1 && !itemWrap.is(":animated")) {    
       var t = e.touches[0], 
        deltaX = touch.x - t.clientX, 
        deltaY = touch.y - t.clientY, 
        absX = Math.abs(deltaX),        // added 
        absY = Math.abs(deltaY);        // added 

       // Only consider the event when the delta in the 
       // desired axis is greater than the one in the other. 
       if(vertical && absY > absX || !vertical && absX > absY) // added 
        self[vertical && deltaY > 0 || !vertical && deltaX > 0 ? 'next' : 'prev'](); 

       e.preventDefault(); 
      } 
     }; 
    } 

我與本地和Opera瀏覽器嘗試這種在Android中,似乎按預期工作。

+0

我試圖修改代碼,但沒有運氣......我設置了deltaY = 0和垂直&deltaY> 0 ||但沒有工作......但是我的解決方案工作:)可以你告訴我什麼||和?意思? – MonteCristo 2012-08-13 23:35:24

+0

'?'用於表示一個內聯'if'語句,其結構是'boolean-expr? then-expr:else-expr;'。 '||'只是inline'if'語句的'boolean-expr'中使用的邏輯'or'運算符。 有關'?'運算符的更多信息,請查看此SO問題:http://stackoverflow.com/questions/10270351/how-to-write-a-inline-if-statement-in-javascript – 2012-08-14 02:32:34

+1

有輕微的bug它在e.preventDefault();防止滾動頁面時刷...固定版本在這裏http://jsfiddle.net/shavindra/nvyU8/4/ – MonteCristo 2012-08-14 12:46:59

0

我用同樣的問題掙扎了一段時間,直到我發現下面的FIX-

Initialization-

var $scroller1 = $('#outer-container1').kinetic({'y':false}); 

這可以防止垂直滾動的容器上,但不用手垂直滾動到瀏覽器滾動。

然後轉到jquery kinetic源代碼並註釋掉所有鼠標和滾動操作事件的e.preventDefault()

這個黑客爲我工作。 https://github.com/davetayls/jquery.kinetic/issues/33