2011-11-21 24 views
27

我有一堆元素。有些是可拖動的,有些可以丟棄,有些可以。如何檢測元素是否可拖動或可拖放?如何檢查某個元素是否可拖放,可拖動或其他「可見」?

+0

爲什麼你不能使用實例化'droppable'或'draggable'當原來的選擇使用呢? – zzzzBov

+0

@zzzzBov,我的conrol是使用AJAX加載的,所以我不知道文檔上發生了什麼。 –

+0

請顯示一些代碼。我不知道你在說什麼。如果您通過AJAX發送一些HTML,那麼爲什麼元素是可拖動的還是可拖放的? – zzzzBov

回答

25

你也可以使用jQuery的數據()這樣的..

if ($(elem).data('draggable')) { 
     alert("yes"); 
} 
else { 
     alert("no"); 
} 

if ($(elem).data('fooable')) { 
     alert("yes"); 
} 
else { 
     alert("no"); 
} 

見這裏:http://bootply.com/60153

+3

只是確保你實際上沒有用大括號寫if/else語句! – Mathletics

+0

因此,jQuery在'.data'中註冊了所有'〜bles'? –

+0

是的,jQuery使用數據()的很多內部的東西 - http://ejohn.org/apps/workshop/adv-talk/ - CSS類檢查也是可行的,我不知道哪個會更好你的情況,或從性能的角度來看。 – ZimSystem

5

對於可拖動的元素:

$(elem).is('.ui-draggable') 

或者你可以filter,或只選擇$('.ui-draggable');

對於可放開,你會用.ui-droppable,可調整大小爲.ui-resizable,可選擇的是.ui-selectable的容器雖然你選擇的項目是.ui-selectee,排序是.ui-sortable的容器。

+0

有什麼更好的? Css類檢查或檢查'data'?爲什麼? –

+0

這真的取決於你的實現。刪除一個類很容易,刪除一些數據也很容易。我感覺這個問題是使用錯誤方法的一個症狀。 – zzzzBov

14

這對我的作品與jQuery 1.10.2

if ($("el").data('uiDraggable')){ //or uiDroppable 
    alert("draggable") 
} else { 
    alert("not draggable") 
} 

或者,可以調用無參數的.data()方法

$("el").data() 

應打印像

對象{uiDraggable:$(匿名函數)(匿名函數)}

在這裏你可以看到對象的屬性。

0

我使用Modernizr的:

if (Modernizr.draganddrop) { 
// use drag and drop 
} 
相關問題