首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在拖动一个jqueryUI可拖动元素时触发对其他多个元素的拖动

问在拖动一个jqueryUI可拖动元素时触发对其他多个元素的拖动
EN

Stack Overflow用户
提问于 2014-05-26 14:44:03
回答 1查看 3.9K关注 0票数 1

例如,我有三个可拖动的元素,如下所示:

代码语言:javascript
复制
<div class="draggable main">Main</div>
<div class="draggable followers">Follower</div>
<div class="draggable followers">Follower2</div>

如果.main被拖动,我们也需要拖动.followers。不仅是位置,而且还触发所有拖放事件,如开始,拖动,停止。注意,跟随者将是正常的可拖放元素。当.main被拖动时,他们应该像在同一个可拖动元素中一样移动,从而触发所有.follower拖放元素的事件。

这是JS

代码语言:javascript
复制
jQuery('.draggable.followers').draggable();
jQuery('.draggable.main').draggable({
    // If .main is dragged, We need .followers to be dragged too. Not just positions but also triggering all the draggable events in them like start, drag, stop.
});

这里是jsfiddle http://jsfiddle.net/9x56E/1/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-26 15:27:27

只需稍微“欺骗”一下HTML就可以了,就像这样:

代码语言:javascript
复制
<div class="special-draggable">
    <div class="main">Main</div>
    <div class="draggable followers">Follower</div>
    <div class="draggable followers">Follower2</div>
</div>

稍微调整一下CSS:

代码语言:javascript
复制
.draggable{
    border: 1px solid red;
    width: 60px;
    height: 60px;
}
.main{
    width: 300px;
    border: 1px solid red;
    height: 60px;
}

然后jQuery:

代码语言:javascript
复制
jQuery('.draggable.followers').draggable();
jQuery('.special-draggable').draggable();

http://jsfiddle.net/Niffler/9x56E/2/

编辑:对不起,错过了必须触发可拖事件的部分.

这个怎么样:

代码语言:javascript
复制
$(function() {
    $('.draggable.followers').draggable();
    $('.draggable.main').draggable();

    /* trigger dragstart on followers when main is dragged */
    $('.draggable.main').on('dragstart', function() {
        $('.draggable.followers').each(function() {
            $(this).trigger('dragstart');
        });
    });

    /* trigger drag on followers when main is dragged and adjust position */
    $('.draggable.main').on('drag', function() {
        var maintop = $(this).css('top');
        var mainleft = $(this).css('left');

        $('.draggable.followers').each(function() {
            $(this).trigger('drag');
            $(this).addClass('ui-draggable-dragging');
            $(this).css('margin-left', mainleft);
        });

        $('.draggable.followers:first').css('margin-top', maintop);
    });

    /* trigger dragstop on followers when main is dragged and adjust position */
    $('.draggable.main').on('dragstop', function() {
        var maintop = $(this).css('top');
        var mainleft = $(this).css('left');

        $('.draggable.followers').each(function() {
            $(this).trigger('dragstop');
            $(this).removeClass('ui-draggable-dragging');
            $(this).css('margin-left', mainleft);
        });

       $('.draggable.followers:first').css('margin-top', maintop);
    });


    /* test different actions on .followers */
    $('.draggable.followers').on('dragstart', function() {
        // do something
    });

    $('.draggable.followers').on('drag', function() {
        // do something
    });

    $('.draggable.followers').on('dragstop', function() {
        // do something
    });

});

这里有一个小提琴:http://jsfiddle.net/Niffler/6TZp3/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23872670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档