2014-09-25 57 views
3

有沒有什麼辦法可以啓動一個draggable的堆棧過程,當它被點擊時,不只是拖動?jQuery UI Draggable:堆棧點擊

我發現this解決方案,它基本上只是試圖複製庫代碼。 (這也是我在下面插入的一個重要部分)。沒有更優雅的解決方案嗎?

修改作者的代碼,下面的解決方案工作:

function bringFront(elem, stack){ 
    // Brings a file to the stack front 
    var min, group = $.makeArray($(stack)).sort(function(a, b) { 
     return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0); 
    }); 

    if(group.length < 1) return; 
    min = parseInt(group[0].style.zIndex, 10) || 0; 
    $(group).each(function(i) { 
     this.style.zIndex = min+i; 
    }); 

    if(elem == undefined) return; 
    $(elem).css({'zIndex' : min+group.length}); 
} 

但它顯然是更好的以某種方式調用庫方法。

回答

4

發現黑客jQuery的可拖動小工具的解決方案:

$('#myDraggable').click(function(event){ 
    var widget = $('#myDraggable').data('ui-draggable'); 
    widget._mouseStart(event); 
    widget._mouseDrag(event); 
    widget._mouseStop(event); 
}); 
+1

謝謝,這真棒,我用它在調整大小的start()回調以將調整大小的元素也帶到前面。雖然我希望他們只是暴露了這種方法 - 它也可能對其他事情有用。 – NPC 2015-08-14 20:56:45

0

你有沒有嘗試過簡單的觸發堆棧拖動掀起了點擊?

$('#target').on("click", function() { 
     $(this).draggable({ stack: "#products" }); 
}); 
+0

它不起作用。顯然,堆疊功能在初始化時不會被調用。 – NanoWizard 2014-09-25 18:50:32