2013-12-09 88 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; 
      } 
相關問題