首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拖拽不起作用?

拖拽不起作用?
EN

Stack Overflow用户
提问于 2012-10-29 14:06:57
回答 2查看 289关注 0票数 2

大家好,我有一个拖放元素的函数,下面是我的代码:

代码语言:javascript
复制
$(document).ready(function() {

    var i = 0;
    $("button[id='columnadd']").click(function () {
        alert(1);
            var domElement = $('<aside id="shoppingCart' + i + '" class="shoppingCart"><h2 class="ui-widget-header">Add Menu Items Here</h2><aside class="ui-widget-content" id="droppable"><ol><li class="placeholder">Add your items here</li></ol></aside></aside>');
            i++;
            $(this).after(domElement);
    });

        $(".small_box li" ).draggable({
            appendTo: "body",
            helper: "clone"
        });
});

$('#shoppingCart ol').droppable({
    accept: '.small_box li',
    drop: function (event, ui) {
        alert(1);
        $(this).find(".placeholder").remove();
        $("<li></li>").text(ui.draggable.text()).appendTo(this);
    }
});

下面是我的html:

代码语言:javascript
复制
    <aside class="small_box">
    <h4>BRANDS</h4>
    <ul>
        <li id ="brand1"><a class="" href="#">Brand1</a></li>
        <li id ="brand2"><a href="#">Brand2</a></li>
        <li id ="brand3"><a href="#">Brand3</a></li>
        <li id ="brand4"><a href="#">Brand4</a></li>
     </ul>
    </aside>

我应该可以顺道去一下这个地方<li class="placeholder">Add your items here</li>

代码语言:javascript
复制
var domElement = $('<aside id="shoppingCart' + i + '" class="shoppingCart"><h2 class="ui-widget-header">Add Menu Items Here</h2><aside class="ui-widget-content" id="droppable"><ol><li class="placeholder">Add your items here</li></ol></aside></aside>');

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-29 14:26:55

首先,请修复您的代码缩进。

您的代码中有一些错误:

  1. var i = 0;,我认为它应该是一个全局变量。因此,将它放在$(document).ready(function() {})块之外;
  2. 单击时创建一个DOM元素(即拖放区域),该元素在单击触发器之前不会出现在页面中。通过在$(document).ready(function() {})块中执行$('#shoppingCart ol').droppable({...}),您可以尝试将droppable添加到一个甚至不在页面中的元素中,因此这不会有任何作用。

下面是一个例子:

代码语言:javascript
复制
$("button[id='columnadd']").click(function () {
  // create the element
  var domElement = $('<aside id="shoppingCart' + i++ + '" class="shoppingCart"><h2 class="ui-widget-header">Add Menu Items Here</h2><aside class="ui-widget-content" id="droppable"><ol><li class="placeholder">Add your items here</li></ol></aside></aside>');

  // put it after $(this)
  $(this).after(domElement);
  // at this point you have domElement in your page

  // make it droppable
  domElement.find("ol").droppable({
    // put options here
    greedy: true,
    drop: function (event, ui) {
      makeItDroppableToo(event, ui, this);
    }
  });
});

这是一个函数,用来使被拖放的元素拥有自己的占位符

代码语言:javascript
复制
function makeItDroppableToo(e, ui, obj) {
  $(obj).find(".placeholder").remove();

  var placeholder = $("<ol><li class='placeholder'>You can also drop it here</li></ol>");
  $("<li></li>").append(ui.draggable.text()).append(placeholder).appendTo($(obj));

  // this is the same as the previous one
  placeholder.droppable({
    // put options here
    greedy: true,
    drop: function (event, ui) {
      makeItDroppableToo(event, ui, this);
    }
  });
}
票数 0
EN

Stack Overflow用户

发布于 2013-09-03 17:21:21

试试这个小提琴,我是和JQueryUI一起工作的

http://jsfiddle.net/ashpriom/yHLGP/

代码语言:javascript
复制
  $(function() {
$( "#draggable" ).draggable();
$( "#droppable" ).droppable({
  drop: function( event, ui ) {
    $( this )
      .addClass( "ui-state-highlight" )
      .find( "p" )
        .html( "Dropped!" );
  }
});

});

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

https://stackoverflow.com/questions/13116638

复制
相关文章

相似问题

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