可拖动和可排序,停止和更新事件

时间:2013-12-09 22:56:03

标签: jquery draggable jquery-ui-sortable

我正在使用Jquery UI中的draggable类和可排序类。我的可拖动与我的可排序连接,我需要从我的可拖动容器转移到我的可排序容器。

在我的可拖动容器中,我有两个不同的项目,让我们说这是一篇文章和一本书,我的可分类容器是书架。这就是我要做的事情:当一本书被拖进书架时,它被添加到那里;但如果将文章拖到书架上,则会在文章中创建一本书,并将其添加到书中。这是因为书架上只允许书籍。

我已经能够在javascript中识别哪个启动函数使用简单的if / else if,并且我在可拖动容器中附加了我的stop事件。它一切正常到这里工作。问题是stop事件没有检测到它何时放在可排序的容器中,所以如果我在屏幕上移动它并在其他地方释放鼠标按钮,stop事件仍会执行并继续执行它应该发生的事情是在实际的容器上。

我也尝试将这些函数放在可排序容器的更新事件中,但是当我这样做时,由于某种原因,这些步骤不会执行,即使它将它可视地放在可排序的容器上,它也不会保存或完成其余的实际功能。

更新

$( “draggableUnselected”)。可拖动({

    cursor: 'pointer',
    connectToSortable: "##bookShelf",
    helper: "clone",
    revert: "invalid",
    stop: function( event, ui ) {
        if($(this).attr("itemType")=="Book")
            {updateSelectedBooks();}
        else if($(this).attr("itemType")=="article")
            {
            $.ajax({
                url : "/com/Book.cfc",
                data : { method: 'quickAddBook', organizationid: #iterator.organizationid()#, profileid: #url.id#, name: "New Book "+$(this).attr("articleName") },
                error : statusAjaxError,
                dataType : "text",
                cache: false
            });
            updateSelectedBooks();
            }
        }

});

var $ selectedBooks = $(“## selectedBooks”);

        $selectedBooks .sortable({
            revert: true,
            placeholder: "bookShelfTarget",
            connectWith: "##recycling"//,
           // update: //I copy the code from stop here for debugging
        });

1 个答案:

答案 0 :(得分:0)

我在做了一些研究之后解决了这个问题,答案实际上是在恢复中使用我的代码而不是停止或更新。使用另一个if来识别对象是否从容器中释放出来。

revert:function(socketObj)

            {
                if (socketObj) 
                {
                   //code goes here
                }
             return !socketObj;
            }