2012-02-17 68 views
2

即時通訊jquery/javascript很新。所以在這裏,我發現這個js代碼用於swipedown和swipeup。但不知道如何使用它或稱它。如何在javascript/jquery中使用/調用這個函數?

JS代碼:

(function() { 
// initializes touch and scroll events 
    var supportTouch = $.support.touch, 
      scrollEvent = "touchmove scroll", 
      touchStartEvent = supportTouch ? "touchstart" : "mousedown", 
      touchStopEvent = supportTouch ? "touchend" : "mouseup", 
      touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; 

// handles swipeup and swipedown 
    $.event.special.swipeupdown = { 
     setup: function() { 
      var thisObject = this; 
      var $this = $(thisObject); 

      $this.bind(touchStartEvent, function(event) { 
       var data = event.originalEvent.touches ? 
         event.originalEvent.touches[ 0 ] : 
         event, 
         start = { 
          time: (new Date).getTime(), 
          coords: [ data.pageX, data.pageY ], 
          origin: $(event.target) 
         }, 
         stop; 

       function moveHandler(event) { 
        if (!start) { 
         return; 
        } 

        var data = event.originalEvent.touches ? 
          event.originalEvent.touches[ 0 ] : 
          event; 
        stop = { 
         time: (new Date).getTime(), 
         coords: [ data.pageX, data.pageY ] 
        }; 

        // prevent scrolling 
        if (Math.abs(start.coords[1] - stop.coords[1]) > 10) { 
         event.preventDefault(); 
        } 
       } 

       $this 
         .bind(touchMoveEvent, moveHandler) 
         .one(touchStopEvent, function(event) { 
        $this.unbind(touchMoveEvent, moveHandler); 
        if (start && stop) { 
         if (stop.time - start.time < 1000 && 
           Math.abs(start.coords[1] - stop.coords[1]) > 30 && 
           Math.abs(start.coords[0] - stop.coords[0]) < 75) { 
          start.origin 
            .trigger("swipeupdown") 
            .trigger(start.coords[1] > stop.coords[1] ? "swipeup" : "swipedown"); 
         } 
        } 
        start = stop = undefined; 
       }); 
      }); 
     } 
    }; 

//Adds the events to the jQuery events special collection 
    $.each({ 
     swipedown: "swipeupdown", 
     swipeup: "swipeupdown" 
    }, function(event, sourceEvent){ 
     $.event.special[event] = { 
      setup: function(){ 
       $(this).bind(sourceEvent, $.noop); 
      } 
     }; 
    }); 

})(); 

這是我想使用上述代碼

<a href="<?php echo base_url();?>home/drop_down" id="swipedown"></a> 
觸發錨固元件

試圖調用這樣的功能:

$('#swipedown').live('swipedown', function(event, data){ 
        alert('swipes') 
      }); 

但它並沒有提示我警報。 >。 <。 任何幫助將不勝感激。

+0

是不是有相關文件證明,無論你找到了插上? – Scott 2012-02-17 09:05:23

+0

代碼自動執行。這意味着只要加載腳本,該函數就會被執行。它正在向jQuery事件集合添加swipeupdown事件。 – Zlatko 2012-02-17 09:08:32

+0

@scott我沒有找到任何文檔,這裏是鏈接:http://snipt.net/blackdynamo/swipe-up-and-down-support-for-jquery-mobile – 2012-02-17 09:16:05

回答

1

last()在創建後調用funcion。 funcion爲jquery增加了一種新的可能性。所以,你也許可以把它做:

$('#swipedown').bind('swipedown', function(e){ 
    alert('test'); 
}); 
+0

嘗試了您的代碼,但仍然沒有迴應,但是當我將它綁定到單擊事件時,它會觸發警報。這非常令人沮喪。 – 2012-02-17 09:18:21

+0

嘗試附加事件到$(窗口)對象,也許它是有限的.. – Schiavini 2012-02-17 09:35:11

+0

你也可以嘗試添加一個警報後'setup:function(){',所以至少你知道事件是否債券,但不起作用,或事件根本沒有聯繫。 – Schiavini 2012-02-17 09:37:49

0

您的代碼將被添加(如記錄)的jQuery events special collection這意味着,你可以調用swipeupswipedown任何其他jQuery的事件。

例如:

$("div p").live('swipedown',function() { 
    alert("swiped down"); 
}); 

這將在swipedown行動發生在像p元素被觸發:

<body> 
<div> 
    <h1>hello world</h1> 
    <p>pull me down</p> 
</div> 
</body> 
相關問題