如何检查某个元素是否可拖放,可拖动或其他“可见”?

问题描述:

我有一堆元素。有些是可拖动的,有些可以丢弃,有些可以。如何检测元素是否可拖动或可拖放?如何检查某个元素是否可拖放,可拖动或其他“可见”?

+0

为什么你不能使用实例化'droppable'或'draggable'当原来的选择使用呢? – zzzzBov

+0

@zzzzBov,我的conrol是使用AJAX加载的,所以我不知道文档上发生了什么。 –

+0

请显示一些代码。我不知道你在说什么。如果您通过AJAX发送一些HTML,那么为什么元素是可拖动的还是可拖放的? – zzzzBov

你也可以使用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

对于可拖动的元素:

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

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

对于可放开,你会用.ui-droppable,可调整大小为.ui-resizable,可选择的是.ui-selectable的容器虽然你选择的项目是.ui-selectee,排序是.ui-sortable的容器。

+0

有什么更好的? Css类检查或检查'data'?为什么? –

+0

这真的取决于你的实现。删除一个类很容易,删除一些数据也很容易。我感觉这个问题是使用错误方法的一个症状。 – zzzzBov

这对我的作品与jQuery 1.10.2

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

或者,可以调用无参数的.data()方法

$("el").data() 

应打印像

对象{uiDraggable:$(匿名函数)(匿名函数)}

在这里你可以看到对象的属性。

我使用Modernizr的:

if (Modernizr.draganddrop) { 
// use drag and drop 
}