2009-04-08 77 views
11

調用start阻力在jQuery UI的我可以一個元素配置爲可拖動通過調用jQuery UI的,手動

$("#drag").draggable(); 

但有一個開始,並從另一個功能手動停止拖動功能呢?即

someOtherFunction = function() { 
    $("#drag").startdrag(); 
} 
yetAnotherFunction = function() { 
    $("#drag").stopdrag(); 
} 
+0

也許你感興趣的scrollTo,因爲我不敢相信拖動可以移動的物體,而不鼠標交互? – TStamper 2009-04-08 15:08:44

+0

我從來沒有說過我不想使用鼠標。我必須調用div外部的拖動,因爲它應該使用FScommand從Flash文件中啓動。 – Jan 2009-04-08 19:42:03

回答

12

上面的答案似乎過於複雜。

$('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) { 
    $('.draggableObject').trigger(e); 
}); 
1

通過查看鼠標事件的腳本啓動拖動啓動。向下鼠標,然後鼠標移動。如果你可以通過Javascript模擬這些鼠標移動(我不知道在哪裏,如何,甚至是否可能),那麼它應該開始拖動。

注意:只是發現YUI有一種方法來模擬鼠標移動和鼠標點擊。退房http://developer.yahoo.com/yui/yuitest/#useractions

+0

這聽起來太複雜了。也許這會更容易與其他圖書館完成,然後呢?也許prototype.js或類似的東西? – Jan 2009-04-08 19:51:04

1

停止拖你只需要在拖動回調返回false,像這樣:

$("#unlock-handle").draggable({axis:'x', containment:'parent', drag:onDrag}); 

... 

var onDrag = function(e) {  
    if ($(this).position().left > 200) return false; 
}; 

希望它可以幫助:-)

1

我沒有找到一個方法來觸發手動拖動,但我找到了解決類似情況的解決方法。

我有這種情況與兩個重疊的圖像(見下圖),都是部分透明的。在draggable的開始(事件)中,我想檢查它是否打到透明像素。如果是這樣的話,我會在另一個元素下面查看它是否被擊中。如果是這樣,我想開始拖延。

enter image description here

解決方案?我在mousemove上重新排序圖像,然後拖動該頂層圖像。

像素精確的元素選擇,看到我在另一個答案:registering clicks on an element that is under another element