2013-12-09 44 views
0

我正在使用可拖拽的类和Jquery UI中的可排序类。我的可拖动与我的可排序连接,我需要从可拖动容器转移到可排序容器。可拖拽和排序,停止和更新事件

在我的可拖动容器中,我有两个不同的项目,可以说它是一篇文章和一本书,而我的可排序容器就是书架。这就是我想要做的事情:当一本书被拖入书架时,它被添加到那里;但是如果一篇文章被拖到一个书架上,那么就会在文章中创建一本书被添加到书中。这是因为只有书籍被允许放在书架上。

我已经能够识别哪些函数用一个简单的if/else在javascript中启动,并且我在可拖动容器中附加了这个it stop 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 
     }); 
+0

您可以包括用于演示的小提琴? – Trevor

+0

我在我的问题中更新了一些代码,此刻我不能包含小提琴。额外的#符号是由于融合coldfusion。 – rsek

+0

没有小提琴或HTML代码,很难帮助你:/ – whitep4nther

回答

0

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

复归:功能(socketObj)

  { 
       if (socketObj) 
       { 
        //code goes here 
       } 
      return !socketObj; 
      } 
相关问题