2012-10-11 27 views
0

我正在實現一個網站使用jquery-ui能夠排序列表。防止tomahawk命令鏈接被激活,同時使用jquery排序列表.sortable()

jQuery(".folder ul").sortable({ 
    opacity: 0.6, 
    cursor: 'move', 
    update: sortUpdate, 
    distance: 15, 
    items: "> li:has(a)", 
}); 

列表元素只能包含元素時纔可排序。到現在爲止還挺好。

由於可排序項目包含一個鏈接,所以當我放棄可排序項目時,鏈接被調用(我認爲是因爲它是作爲onclick事件處理的?)。 我試着創建一個新的onclick處理程序來處理自己的點擊事件,檢查用戶當前是否在拖動。但是這不起作用。

jQuery('.folder-used').click(function(event) { 
    event.stopPropagation(); 
event.preventDefault(); 
}); 

當我把一個斷點放到我自己的點擊處理程序中時,它表明點擊時到達了代碼。但是頁面無論如何都會重定向。我的猜測是,這是因爲我必須使用tomahawk commandlink。 Tomahawk生成自己的javascript函數來處理提交操作。

<t:commandLink action="#{dataHandler.filterChanged}"> 
<f:param name="id" value="#{val}" /> 
<img:generateTextImage height="182" width="50" value="#{val}" verticalAligned="true" xpos="54" ypos="29" /> 
</t:commandLink> 

我該如何解決這個問題?有沒有人有一個想法,我可以如何處理tomahawk的onclick事件?

Thx提前! Zerd

P.s.我已經嘗試了不同的方式,如描述here(可排序的開始和停止事件)或here(禁用鏈接的點擊事件)

回答

0

我找到了我的問題的答案。

我認爲其中規定,如果我現在拖着

jQuery(".folder ul").sortable({ 
    opacity: 0.6, 
    cursor: 'move', 
    update: sortUpdate, 
    distance: 15, 
    items: "> li:has(a)", 
    start: function(event, ui) { 
     dragging = true;  
    } 
}); 

在commandLink onclick事件我檢查,如果我拖着一個變量。如果是這樣,我將dragging變量重置爲false並返回false,所以不會調用tomahawk操作。

<t:commandLink onclick="if(dragging) { dragging = false; return false; }" action="#{handler.filterChanged}"> 

戰斧會照顧我的onclick代碼,並把它放在了自己的面前。與return false;我確保在這種情況下,戰斧編碼被忽略。