如何使用处理程序获得可拖动的图像?我已经读过处理程序应该在draggable中,但我不能在图像中有另一个元素。
我在这里有一个小提琴,可以更好地展示:
http://jsfiddle.net/index/bfpWv/10/
问题是我应该如何在#viewport
内拖动并仍移动#image
?
修改
我认为这个问题有点模糊:
因为现在(在小提琴上)当你先点击#image
并拖动时,它会拖动#image
。但是当你先点击#viewport
时,它却没有。这就是我想要发生的事情,当你先点击#viewport
然后拖动时,它仍会拖动#image
。
答案 0 :(得分:3)
HTML:
<div id="container">
<img id="image" src="http://thechive.files.wordpress.com/2011/03/hot-sexy-redheads-12.jpg" />
<div id="viewport"></div>
</div>
JS:
$(document).ready(function(){
var isDragging,
top = 0, left = 0,
curX, curY;
$("#image").mousedown(function (e) {
e.preventDefault();
});
$("#container").mousedown(function (e) {
isDragging = true;
curX = e.pageX;
curY = e.pageY;
left = Number($("#image").css("margin-left").
toString().replace("px", ""));
top = Number($("#image").css("margin-top").
toString().replace("px", ""));
});
$(document).mouseup(function () {
if (isDragging){
// reset
isDragging = false;
top = 0;
left = 0;
}
});
$("#container").mousemove(function(e){
if (!isDragging) {
return;
}
left += e.pageX - curX;
top += e.pageY - curY;
// set the position
$("#image").css("margin-left", left + "px").
css("margin-top", top + "px");
curX = e.pageX;
curY = e.pageY;
});
});
答案 1 :(得分:0)
更新了您的fiddle。请阅读此处的文档: http://api.jqueryui.com/draggable/#option-containment
您必须在.draggable
方法中使用包含选项,并且还需要将图像放在#viewport
内,以便最初将其放在#viewport
内。您也可以将其保持在#viewport
之外,一旦将其拖到#viewport
内,它就不会让您再次将其拖到外面。
答案 2 :(得分:0)
考虑你的描述
我应该如何在#viewport
内拖动并仍移动#image
- 使用简单的z-index css样式做到了。希望这次有所帮助。
Fiddle