【发布时间】:2018-04-11 16:23:06
【问题描述】:
我正在尝试将<li> 定位到与页面上最后一个<li> 完全相同的位置。我正在使用 jQuery .position() 函数。
当您在1000ms 超时后在我的<li> 上向左滑动/拖动时,我想将<li> 移动到我最后一个<li> 项目"stackPos" 的位置
我设置了最后一个元素:
$('ul.feed li').last().addClass('stack');
获取它的位置:
var stackPos = $('ul.feed li.stack').position();
设置超时后的位置:
setTimeout(function(){
$(this).css({top: stackPos.top, left: stackPos.left});
}, 1000);
超时后我可以设置一个console.log(),它会触发但位置不会更新。
完整的代码和演示 - https://jsfiddle.net/myz3czro/32/
$( document ).ready(function() {
$('ul.feed li').first().addClass('top');
$('ul.feed li').last().addClass('stack');
var touch = $('ul.feed li.top').offset().left;
var pullLeftLimit = touch - 15;
var stackPos = $('ul.feed li.stack').position();
console.log('Stack Of Cards at: ' + stackPos.left + ' top: ' + stackPos.top);
$($('.content ul li').get().reverse()).each(function(i, el) {
$(el).css('z-index', i + 1);
var degrees = Math.floor((Math.random() * 20) - 10);
$(el).css({
'-webkit-transform' : 'rotate('+degrees+'deg)',
'-moz-transform' : 'rotate('+degrees+'deg)',
'-ms-transform' : 'rotate('+degrees+'deg)',
'-o-transform' : 'rotate('+degrees+'deg)',
'transform' : 'rotate('+degrees+'deg)',
'zoom' : 1
});
});
$( function() {
$( ".draggable" ).draggable({
axis: "x",
drag: function( event, ui ) {
var newTouch = $('ul.feed li.top').offset().left;
if(pullLeftLimit > newTouch){
$(this).addClass('swipe');
setTimeout(function(){
$(this).css({top: stackPos.top, left: stackPos.left});
}, 1000);
}
}
});
});
$(function(){
$( ".cover" ).on( "swipe", swipeHandler );
function swipeHandler( event ){
$( this ).parent().addClass( "swipe" );
}
});
function stackMe(){
console.log('test');
}
});
【问题讨论】:
标签: jquery jquery-ui jquery-mobile