如何同步调用克隆元素上的拖动事件?

发布于 2024-12-03 09:01:54 字数 411 浏览 0 评论 0 原文

我必须拖动克隆的元素,但我不明白如何同步调用触发事件

我的示例http://jsfiddle.net/CfSMG/4/

正确示例http://jqueryui.com/demos/droppable/#photo-manager

向上: 感谢所有我已经解决问题的人

I've to drag the cloned element, but i don't understand how to call the trigger events synchronously

my example: http://jsfiddle.net/CfSMG/4/

correct example: http://jqueryui.com/demos/droppable/#photo-manager

Up:
Thx to all i've resolved the problem allready

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆梦 2024-12-10 09:01:54

我的解决方案:

$('#move').mousedown(function(event) {
    var offset =  $(this).offset(),
        map = {
            position: 'absolute',
            top : offset.top + 'px',
            left : offset.left + 'px',
            zIndex : 100
        };

    if($('.foo')[0]) return this;

    $(this).clone().bind('mousedown mousemove', function(event) {
        var _this = $(this),
            offset = _this.position(),
            _event = event;

        $(document).bind({
             mousemove : function(event) {
                 var axis = function(i) {
                     var page = {
                         top : 'pageY',
                         left : 'pageX'
                     }[i];
                     return event[page] - (_event[page] - offset[i]) + 'px';
                 };
                _this.css({
                    left : axis('left'),
                    top : axis('top')
                }).unbind('mousemove');
              },
             mouseup : function() {
                _this.animate(map, function() {
                    $(this).remove();
                });
                $(this).unbind('mousemove');
             }
        });
    }).addClass('foo').css(map).appendTo('body');

    event.preventDefault();
    event.stopPropagation();
});

现场演示:jsFiddle

My solution:

$('#move').mousedown(function(event) {
    var offset =  $(this).offset(),
        map = {
            position: 'absolute',
            top : offset.top + 'px',
            left : offset.left + 'px',
            zIndex : 100
        };

    if($('.foo')[0]) return this;

    $(this).clone().bind('mousedown mousemove', function(event) {
        var _this = $(this),
            offset = _this.position(),
            _event = event;

        $(document).bind({
             mousemove : function(event) {
                 var axis = function(i) {
                     var page = {
                         top : 'pageY',
                         left : 'pageX'
                     }[i];
                     return event[page] - (_event[page] - offset[i]) + 'px';
                 };
                _this.css({
                    left : axis('left'),
                    top : axis('top')
                }).unbind('mousemove');
              },
             mouseup : function() {
                _this.animate(map, function() {
                    $(this).remove();
                });
                $(this).unbind('mousemove');
             }
        });
    }).addClass('foo').css(map).appendTo('body');

    event.preventDefault();
    event.stopPropagation();
});

Live demo: jsFiddle

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文