javascript - 使用 jQuery 嵌套拖动、滑动

标签 javascript jquery swipe drag jquery-draggable

以下代码用于嵌套滑动/拖动,父级和子级都是可拖动的。

P1... 它工作得很好,但有一个可爱的问题,如果我们单独拖动父级,它就会完美地工作。但是当我们拖动可拖动子级时,父级也会被自动拖动... Jsbin for P1...

P1... 是由“.closest('.'+ mainElem[0].className)”引起的; 如果我删除它,那么 parent 在拖动 child 时就不会被拖动,“””产生另一个问题。

............那就是......

P2... 如果我们单击任何不可拖动的子级假设文本,则可拖动的父级不会移动。 ...并且...如果我们单击三行菜单按钮,那么它将被拖动,而不是其可拖动父级... Jsbin for P2...

$.fn.on_swipe = function(o) {

    var te = {};

    this.each(function(){

        var mainElem = $(this);

        $(document).on('mousedown', function(e) {

          e.preventDefault();

            te.target = $(e.target).closest('.'+ mainElem[0].className);
            te.bX = e.pageX;
            te.lastX = te.target.position().left;

            $(this).on('mousemove', function(e) {

                te.eX = e.pageX;
                te.posX = te.lastX + ( -1 * (te.bX - te.eX));
                o.moving(te.target, te.posX);

            }).on('mouseup', function(e) {
                te = {};
                $(this).unbind('mousemove');
                $(this).unbind('mouseup');
            });
        });
    });
};

$('.parent').on_swipe( { moving: function(target, posX) { 
        target.css( 'left' , posX + 'px'); 
    } });

$('.child').on_swipe( { moving: function(target, posX) { 
        target.css( 'left' , posX + 'px'); 
    } });

谢谢:)

最佳答案

解决了您的P1...P2..问题

1) 将文档中的“mousedown”点击更改为其初始化的实际元素。

2) 添加了“stopPropagation()”,以便在拖动子级时不拖动父级

3) 从初始化元素中删除“mouseup”事件并将其添加到文档中

已更新jsbin P1

如果您有任何其他问题,请告诉我

更新:根据评论中的 @kanudo 请求添加 jsbin

更新:最终正确 ..JSBIN..

关于javascript - 使用 jQuery 嵌套拖动、滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31942078/

相关文章:

javascript - JQuery 切换属性 contentEditable = "true"

jquery - 使用 JQuery,如何在 IE 中定位具有样式属性的元素?

javascript - 如何增加 'react-native-swipeout' 上的按钮宽度以进行 ListView 行滑动(React Native)?

swift - 滑动菜单打开滑动和按钮

javascript - 使用 React 和 Express

javascript - Angular : Two Way Data Binding in a Custom Directive Not Working

javascript - 通过js在搜索结果中选择单词

javascript - 如何排除提交的 HTML 表单单选按钮值?

javascript - 如何让导航栏淡入后淡出到顶部?

android - 使用选项卡主机滑动