我希望将一组“可拖动”图像的初始位置存储为图像中的数据属性。然后,当按下“putBack”按钮时,图像将返回其原始位置。问题是图像返回到相对位置。而不是Top&左边,它们位于2XTop和2XLeft。
// assign data attributes x,y data attributes
$('li img').each(function(index) {
$(this).data("Left", $(this).parent().position().left)
.data("Top", $(this).parent().position().top);
console.log($(this).data("Top"));
});
// button to put images back where they started
$("#putBack").bind('click', function() {
$('li img').each(function(index) {
console.log($(this).data("Top"));
$(this).parent().animate(
{ "left": $(this).data("Left"),
"top": $(this).data("Top")
}, "slow");
});
});
HTML ...
<ul>
<li id='apple'><img src="images/apple.png"/></li>
<li id='bread'><img src="images/bread.png"/></li>
<li id='banana'><img src="images/banana.png"/></li>
<li id='hot_dog'><img src="images/hot_dog.png"/></li>
<ul>
...的CSS
ul{
width:100px;
padding:0px;
list-style:none;
font-size:20px;
}
答案 0 :(得分:1)
看起来你保持父li
的位置而不是img
。这是一个js小提琴,可以记住图像位置并相应地移回它们:jsfiddle.net/ps7WN
答案 1 :(得分:0)
这就是诀窍 -
$(document).ready(function(){
$('li').draggable({
// revert: true,
cursor: 'pointer',
opacity: .4,
containment: 'document'
});
// turn on and off dragging
$('.toggle').click(function() {
if ($( "li" ).draggable( "option", "disabled" ) == true){
$( "li" ).draggable( "option", "disabled", false );
$('.toggle').val('Prevent Draggable');
}
else{
$( "li" ).draggable( "option", "disabled", true );
$('.toggle').val('Allow Draggable');
}
});
// assign data attributes x,y data attributes
$('li img').each(function(index) {
$(this).data("Left", $(this).parent().offset().left)
.data("Top", $(this).parent().offset().top);
console.log($(this).data("Top"));
});
// button to put images back where they started
$("#putBack").bind('click', function() {
$('li img').each(function(index) {
$(this).parent().animate(
{ "left": 0,
"top": 0
}, "slow");
});
});
});