如何从一个div拖放到另一个div

时间:2013-05-31 06:12:02

标签: javascript jquery html css html5

任何人都可以帮助我

  1. 当我拖动“iphone”时,从产品div中,它将转到“购物车”,但我不希望它转到“其他购物车”。
  2. 当我拖动“Lolcat衬衫”时来自其他div,它会转到“其他购物车”,但我不想让它去“购物车”。
  3. 我想说的是产品元素想去购物车和其他元素想去其他购物车

    请参阅下面的代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title>jQuery UI Droppable - Shopping Cart Demo</title>
        <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
        <script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
        <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js" type="text/javascript"></script>
        <style>
            h1 { padding: .2em; margin: 0; }
            #products { float: left; width: 500px; margin-right: 2em; }
            #cart { width: 200px; float: left; margin-top: 1em; }
            #cart ol { margin: 0; padding: 1em 0 1em 3em; }
        </style>
        <script>
            $(function() {
    
                $("#catalog").accordion();
    
                $("#catalog li").draggable({
                    appendTo: "body",
                    helper: "clone"
                });
    
                $("#cart ol").droppable({
                    activeClass: "ui-state-default",
                    hoverClass: "ui-state-hover",
                    accept: ":not(.ui-sortable-helper)",
                    drop: function(event, ui) {
                        $(this).find(".placeholder").remove();
                        $("<li></li>").text(ui.draggable.text()).appendTo(this);
                    }
                }).sortable({
                    items: "li:not(.placeholder)",
                    sort: function() {
                        // gets added unintentionally by droppable interacting with sortable
                        // using connectWithSortable fixes this, but doesn't allow you to customize active/hoverClass options
                        $(this).removeClass("ui-state-default");
                    }
                });
    
            });
        </script>
    </head>
    <body>
        <div id="products">
            <h1 class="ui-widget-header">Products</h1>
            <div id="catalog">
                <h2><a href="#">Gadgets</a></h2>
                <div>
                    <ul>
                        <li>iPhone</li>
                        <li>iPod</li>
                        <li>iPad</li>
                    </ul>
                </div>
            </div>
        </div>
        <div id="products">
            <h1 class="ui-widget-header">Other</h1>
            <div id="catalog">
                <h2><a href="#">T-Shirts</a></h2>
                <div>
                    <ul>
                        <li>Lolcat Shirt</li>
                        <li>Cheezeburger Shirt</li>
                        <li>Buckit Shirt</li>
                    </ul>
                </div>
            </div>
        </div>
        <div id="cart">
            <h1 class="ui-widget-header">Shopping Cart</h1>
            <div class="ui-widget-content">
                <ol>
                    <li class="placeholder">Add your items here</li>
                </ol>
            </div>
        </div>
        <div id="cart">
            <h1 class="ui-widget-header">Other Cart</h1>
            <div class="ui-widget-content">
                <ol>
                    <li class="placeholder">Add your items here</li>
                </ol>
            </div>
        </div>
    </body>
    </html>
    

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但我认为您的意思是您只想将其他产品添加到其他购物车而不是将产品添加到其他购物车中?

在这种情况下,您可以做的是唯一地识别购物车和两个目录,而不是两者都具有相同的ID,例如:

...<h1 class="ui-widget-header">Other</h1>
       <div id="catalogO">...

...<h1 class="ui-widget-header">Products</h1>
       <div id="catalogP">...

和购物车ID相同。

然后有两个可拖动的函数,每个目录一个,例如:

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

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

然后添加两个可放置的功能,每个推车一个,例如:

$("#cartP ol").droppable({
     activeClass: "ui-state-default",
     hoverClass: "ui-state-hover",
     accept: "#catalogP li",
     drop: function(event, ui) {
         $(this).find(".placeholder").remove();
         $("<li></li>").text(ui.draggable.text()).appendTo(this);
     }
 }).sortable({
     items: "li:not(.placeholder)",
     sort: function() {
         // gets added unintentionally by droppable interacting with sortable
         // using connectWithSortable fixes this, but doesn't allow you to customize active/hoverClass options
         $(this).removeClass("ui-state-default");
     }
 });

 $("#cartO ol").droppable({
     activeClass: "ui-state-default",
     hoverClass: "ui-state-hover",
     accept: "#catalogO li",
     drop: function(event, ui) {
         $(this).find(".placeholder").remove();
         $("<li></li>").text(ui.draggable.text()).appendTo(this);
     }
 }).sortable({
     items: "li:not(.placeholder)",
     sort: function() {
         // gets added unintentionally by droppable interacting with sortable
         // using connectWithSortable fixes this, but doesn't allow you to customize active/hoverClass options
         $(this).removeClass("ui-state-default");
     }
 });

基本上重要的是将droppable函数的accept属性更改为draggable函数的ID或类。这将只允许具有该ID的组件被放入可放置组件中。

我确信有更有效的方法可以做到这一点,但更改接受属性是一个很好的快速开始,以便解决您的问题,即如果这是您的问题,如果没有请请更清楚地说明。感谢名单。

相关问题