2012-02-17 32 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> 
相关问题