【问题标题】:turn.js with drag and drop drops image twiceturn.js 拖放图像两次
【发布时间】:2015-05-08 14:38:22
【问题描述】:

我有以下与 turn.js 一起使用的代码,除了第 13 页外,它运行良好 - 当我将图像放到第 11 页时,相同的图像会出现在第 13 页上(直接位于屏幕上第 11 页的后面)。

<div class="page"><img src="<?=$book;?>/front.jpg" alt="" /><span class="front"></div>
<div class="page"><img src="<?=$book;?>/blank.jpg" alt="" /></div>  
<div class="page"><img src="<?=$book;?>/dedication.jpg" alt="" /></div>
<div class="page drop" id="drop4"><img src="<?=$book;?>/drag4.jpg" alt="" /></div>
<div class="page" id="page5"></div>
<div class="page drop" id="drop6"><img src="<?=$book;?>/drag6.jpg" alt="" /></div>
<div class="page drop" id="drop7"><img src="<?=$book;?>/drag7.jpg" alt="" /></div>
<div class="page drop" id="drop8"><img src="<?=$book;?>/drag8.jpg" alt="" /></div>
<div class="page" id="page9"><img src="<?=$book;?>/9.jpg" alt="" /></div>
<div class="page drop" id="drop10"><img src="<?=$book;?>/drag10.jpg" alt="" /></div>
<div class="page drop" id="drop11"><img src="<?=$book;?>/drag11.jpg" alt="" /></div>
<div class="page drop" id="drop12"><img src="<?=$book;?>/drag12.jpg" alt="" /></div>
<div class="page drop" id="drop13"><img src="<?=$book;?>/drag13.jpg" alt="" /></div>
<div class="page drop" id="drop14"><img src="<?=$book;?>/drag14.jpg" alt="" /></div>
<div class="page" id="page15"><img src="<?=$book;?>/15.jpg" alt="" /></div>
<div class="page drop" id="drop16"><img src="<?=$book;?>/drag16.jpg" alt="" /></div>
<div class="page" id="page17"><img src="<?=$book;?>/17.jpg" alt="" /></div>
<div class="page" id="page18"><img src="<?=$book;?>/18.jpg" alt="" /></div>
<div class="page"><img src="<?=$book;?>/blank.jpg" alt="" /></div>
<div class="page"><img src="<?=$book;?>/back.jpg" alt="" /></div>

<img class="drag" src="<?=$book;?>/4.jpg" alt="" />
<img class="drag" src="<?=$book;?>/6.jpg" alt="" /><br />
<img class="drag" src="<?=$book;?>/7.jpg" alt="" />
<img class="drag" src="<?=$book;?>/8.jpg" alt="" /><br />
<img class="drag" src="<?=$book;?>/10.jpg" alt="" />
<img class="drag" src="<?=$book;?>/11.jpg" alt="" /><br />
<img class="drag" src="<?=$book;?>/12.jpg" alt="" />
<img class="drag" src="<?=$book;?>/13.jpg" alt="" /><br />
<img class="drag" src="<?=$book;?>/14.jpg" alt="" />
<img class="drag" src="<?=$book;?>/16.jpg" alt="" /><br />

所以下面的代码会在被拖放到的正下方有一个可拖放区域时执行两次。

$( ".drag" ).draggable({
    drag: function(event,ui){
        $this = $(this);
        $('.drop').droppable({
        drop: function(event,ui){
        var src = $this.attr('src');
        $this.hide();
        $(this).html('<img src="'+src+'" style="width:100%;">');
      }
    });
  }
});

我的问题是(我希望我已经提供了足够的信息)如何防止第 13 页继承第 11 页的内容?顺便说一句,即使我先将图像放到第 13 页上,这种情况仍然会发生 - 它仍然会继承我放到第 11 页上的内容。

感谢您的任何想法!

我刚刚注意到,只要将图像拖放到直接位于另一个可拖放区域之上的可拖放区域,就会发生这种行为。

这是一个小提琴:http://jsfiddle.net/e2p6xydg/14/

【问题讨论】:

    标签: jquery drag-and-drop drag turnjs


    【解决方案1】:

    从网上得到了一个答案——感谢我的一个朋友:

    $(".drag").draggable({
    drag: function (event, ui) {
    
    
    },
    start: function (event, ui) {
        $('.drop').droppable({
            drop: function (event, ui) {
                var droppable = $(this);
                ui.helper.css({ pointerEvents: 'none' });
                var onto = document.elementFromPoint(event.clientX, event.clientY);
                ui.helper.css({ pointerEvents: '' });
                if (!droppable.is(onto) && droppable.has(onto).length === 0) {
                    return;
                }
    
                $this = $(this);
                $this.find('img').attr('src', ui.draggable[0].src);
                $(ui.draggable[0]).hide();
            }
        });
    }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多