我已经成功实现了jQueryUI的可拖动功能,但是一旦我添加hammer.js代码,可拖动的代码就无法工作。
不是只要包含hammer.js,而是一旦使用该脚本就会出现问题。
为什么会这样?如何让它们都能工作?
可拖动和hammer都应用于.dataCard和#main。
在这里(未使用hammer.js实现)可拖动代码正常工作:http://goo.gl/MO5Pde 以下是可拖动代码示例:
这里是未注释的锤子代码,可拖动的代码不起作用:http://goo.gl/994pxF 这里是锤子代码:
不是只要包含hammer.js,而是一旦使用该脚本就会出现问题。
为什么会这样?如何让它们都能工作?
可拖动和hammer都应用于.dataCard和#main。
在这里(未使用hammer.js实现)可拖动代码正常工作:http://goo.gl/MO5Pde 以下是可拖动代码示例:
$('#main').draggable({
axis:'y',
revert:true,
start: function(event, ui){
topValue = ui.position.top;
},
drag: function(event, ui){
if(pastBreakpoint === false){
$('#searchInput').blur();
if(topValue > ui.position.top) return false;
if(ui.position.top >= 161){
if(pastBreakpoint === false){
pastBreakpoint = true;
if($('.loadingRefresh').length === 0) $('#main').before('<div class="loadingRefresh"></div>');
else{
$('.loadingRefresh').remove();
$('#main').before('<div class="loadingRefresh"></div>');
}
$('.loadingRefresh').fadeIn();
$('#main').mouseup();
setTimeout(function(){
location.reload();
}, 1000);
}
}
}
}
});
这里是未注释的锤子代码,可拖动的代码不起作用:http://goo.gl/994pxF 这里是锤子代码:
var hammertime = Hammer(document.getElementById('main'), {
transform_always_block: true,
transform_min_scale: 0
});
var posX = 0,
posY = 0,
lastPosX = 0,
lastPosY = 0,
bufferX = 0,
bufferY = 0,
scale = 1,
last_scale = 1;
hammertime.on('touch transform transformend', function(ev) {
if ((" " + ev.target.className + " ").indexOf(" dataCard ") < 0) return;
else manageMultitouch(ev, ev.target); });
function manageMultitouch(ev, element) {
switch (ev.type) {
case 'touch':
last_scale = scale;
return;
case 'transform':
scale = Math.min(last_scale * ev.gesture.scale, 10);
break;
}
if(scale <= 0.5) $(element).hide('clip');
if(scale > 1.0) $(element).addClass('focused');
var transform = "translate(" + 0 + "px," + 0 + "px) " + "scale(" + 1 + "," + scale + ")";
var style = element.style;
style.transform = transform;
style.oTransform = transform;
style.msTransform = transform;
style.mozTransform = transform;
style.webkitTransform = transform;
}