【发布时间】:2012-02-17 09:00:58
【问题描述】:
我对 jquery/javascript 非常陌生。所以在这里,我找到了这个用于向下滑动和向上滑动的 js 代码。但是不知道怎么用,也不知道怎么调用。
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')
});
但它没有提示我警报。 >.<.>
【问题讨论】:
-
在你找到插件的地方没有文档吗?
-
代码是自执行的。这意味着一旦加载脚本,这个函数就会被执行。它正在将 swipeupdown 事件添加到 jQuery 事件集合中。
-
@scott 我没有找到任何文档,这里是链接:snipt.net/blackdynamo/…
-
@zladuric 我怎么称呼它?或使用它?真的不知道该怎么做。
-
嗯,不是很喜欢 jQuery。但是如果它正在监听 swipeupdown 事件,也许你可以尝试在时间线的某个地方手动触发它们来测试?比如 $("#someid").trigger("swipeupdown");?
标签: javascript jquery jquery-mobile