2013-10-31 85 views
1
(function(){ 
    if ($('#right-col').hasClass('shown')){ 
     $(this).swipe({ 
      swipe:function(event, direction, distance, duration, fingerCount) { 
       $(this).addClass('hidden');//.text(direction); 
      } 
     }); 
    }; 
})(); 

這是我正在使用的web項目的滑動功能。但不知何故,我的代碼不能與if語句一起使用。如果我只用這個:刷卡功能不適用於我的if語句

$('#right-col').swipe({ 
    swipe:function(event, direction, distance, duration, fingerCount) { 
    $(this).addClass('bg-blue').text("You swiped " + direction); 
    } 
}) 

它工作正常。任何人都可以告訴我,上面的自我調用函數有什麼特別的錯誤?

+0

(this)不會在這樣的if語句中觸發 – Johnny000

回答

1

當你做$(this).swipe(...),thiswindow。使用ID選擇元素:

(function() { 
    if ($('#right-col').hasClass('shown')) { 
     $('#right-col').swipe({ 
      swipe: function (event, direction, distance, duration, fingerCount) { 
       $(this).addClass('hidden'); //.text(direction); 
      } 
     }); 
    }; 
})(); 

注意,如果#right-col元素的類改變以後,在刷卡功能將不會受到影響。

+0

是的,這解決了我的問題。有時我仍然使用「這個」 - 關鍵詞錯誤。但是謝謝你的幫助! –

+0

JavaScript中的'this'可以肯定會讓人困惑。 –

1

這是一個小故事......但前段時間我寫了我自己的滑動功能。

此功能主要在ios設備中測試。

1.創建自定義事件。

FC = fastclick

SWL = swipeleft

SWR = swiperight

SWU = swipeup

社署= swipedown

2.it的比其他揮筆,你可以更快使用簡單的純js addeventlistener或attachevent。

3.it用純javascript編寫。

4.also的fastclick事件,您可以點擊元素更快..

點擊= 400-500ms

fastclick = 40-50ms

window.onload=function(){ 
(function(d){ 
var 
ce=function(e,n){var a=document.createEvent("CustomEvent");a.initCustomEvent(n,true,true,e.target);e.target.dispatchEvent(a);a=null;return false}, 
nm=true,sp={x:0,y:0},ep={x:0,y:0}, 
touch={ 
    touchstart:function(e){sp={x:e.touches[0].pageX,y:e.touches[0].pageY}}, 
    touchmove:function(e){nm=false;ep={x:e.touches[0].pageX,y:e.touches[0].pageY}}, 
    touchend:function(e){if(nm){ce(e,'fc')}else{var x=ep.x-sp.x,xr=Math.abs(x),y=ep.y-sp.y,yr=Math.abs(y);if(Math.max(xr,yr)>20){ce(e,(xr>yr?(x<0?'swl':'swr'):(y<0?'swu':'swd')))}};nm=true}, 
    touchcancel:function(e){nm=false} 
}; 
for(var a in touch){d.addEventListener(a,touch[a],false);} 
})(document); 

// example 
var h=function(e){console.log(e.type);}; 
document.body.addEventListener('fc',h,false); 
document.body.addEventListener('swl',h,false); 
document.body.addEventListener('swr',h,false); 
document.body.addEventListener('swu',h,false); 
document.body.addEventListener('swd',h,false); 

} 

下面是關於如何你更多的細節可以使用它..

https://stackoverflow.com/a/17567696/2450730

它可能也適用於Android。