简单的jQuery droppable无法正常工作

时间:2012-04-21 05:34:03

标签: javascript jquery jquery-ui

Draggable可以在这里工作,但是当我将DIV拖到可放置区域时,警报功能不会触发。我确定这是愚蠢的事,但也许有人可以阻止我把我的头撞在墙上,我做得不对?

<head>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
            <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
            <title></title>
        </head>
        <body>

    <script>
            $(function() {
                $( ".draggable" ).draggable();
                $( ".droppable" ).droppable({
                    drop: function(event, ui) {
                        alert('dropped');
                    }
                });
            });
    </script>

        <div id=10 class="draggable">one</div>

        <div id="trash" class="droppable"></div>



        </body>
        </html> 

3 个答案:

答案 0 :(得分:7)

问题在于,默认情况下,元素的中心用于确定元素的删除位置。您的div没有定义的大小,因此它是屏幕的宽度。如果您设法删除它以使该元素的中心位于droppable中,您将看到警报。

这种背景颜色的小提琴说明了问题。

http://jsfiddle.net/v6PME/

使用定义的宽度,您将看到您可能正在寻找的功能:

http://jsfiddle.net/v6PME/1/

注意:我假设你已经遗漏了你的css而且#trash div有一些大小,以便它可以被删除。

答案 1 :(得分:0)

它似乎失败了,因为你的droppable div似乎没有任何宽度,所以你不可能放弃任何东西。我拿了你的例子并稍微修改了一下,我就能让它工作了:

<html>
<head>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
            <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
            <title></title>
        </head>
        <body>

    <script>
            $(function() {
                $( ".draggable" ).draggable();
                $( ".droppable" ).droppable({
                    drop: function(event, ui) {
                        alert('dropped');
                    }
                });
            });
    </script>

        <div id=10 class="draggable">one</div>

        <div id="trash" class="droppable">DROP HERE</div>



        </body>
        </html>

答案 2 :(得分:0)

James Montagne answer是对的。特别是它不工作的原因(谢谢!)。

但是,我认为更好的解决方案是通过将tolerance的droppable设置为pointer来提高弃落率。

http://jsfiddle.net/org1b75t/2/