0

如何使用处理程序获得可拖动的图像?我已经读过处理程序应该在可拖动的内部,但我真的不能在图像中包含另一个元素。

我在这里有一个小提琴可以更好地展示:

http://jsfiddle.net/index/bfpWv/10/

问题是我应该如何能够在里面拖动#viewport并仍然移动#image

编辑

我觉得这个问题有点含糊:

因为现在(在小提琴上)当您单击第#image一个并拖动时,它会拖动#image. 但是当你点击第#viewport一个时,它没有。这就是我想要发生的事情,当您单击第#viewport一个并拖动时,它仍然会拖动#image.

4

3 回答 3

3

似乎 jquery draggable 需要将处理程序放在可拖动的内部。只需几行代码,您就可以编写自己的可拖动对象。在这里查看我的演示

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;  
    });
});
于 2013-02-18T04:41:37.383 回答
0

更新了你的小提琴。请从这里阅读文档:http: //api.jqueryui.com/draggable/#option-containment

您必须在您的.draggable方法中使用包含选项,并且您还需要将图像放入 中#viewport,以便最初将其放入#viewport. 你也可以把它放在外面#viewport,一旦你把它拖到里面,#viewport它就不会让你再把它拖到外面了。

于 2013-02-15T03:51:02.537 回答
0

考虑到您的描述 ,我应该如何能够在内部拖动#viewport并仍然移动#image - 使用简单的 z-index css 样式做到这一点。希望这次能有所帮助。 小提琴

于 2013-02-15T12:42:23.383 回答