在w / jQuery上拖动时,将CSS类添加到元素中
是否可以在元素被拖动到特定区域时向元素添加CSS类,并在元素被删除后替换类?
我不是在任何地方寻找这个function,而只是在特定区域。
是的,这当然是可能的。 jQuery UI提供了一些方便的选项和事件来执行此操作。
对于初学者来说,draggable元素总是可以被类.ui-draggable-dragging
在被.ui-draggable-dragging
时引用。
然后, droppable
方法提供一个调用的事件,只要有效的可拖动对象hover在该事件over
,该事件就会执行该函数。 所以,在该函数中我们可以引用.ui-draggable-dragging
并向其添加一个类。
还提供了Out
和drop
事件,我们可以以相同的方式定位可拖动元素。 这是它的样子:
$("#droppable").droppable({ // tolerance can be set to 'fit', 'intersect', 'pointer', or 'touch' tolerance: 'intersect', // Add .hoverClass whenever #draggable is being hovered over #droppable over: function(event, ui) { $('.ui-draggable-dragging').addClass('hoverClass'); }, // Remove .hoverClass whenever #draggable is no longer hovered over #droppable out: function(event, ui) { $('.ui-draggable-dragging').removeClass('hoverClass'); }, // Add .dropClass whenever #draggable is dropped on #droppable drop: function(event, ui) { $('.ui-draggable-dragging').removeClass('hoverClass').addClass('dropClass'); } });
当#draggable
与#draggable
相交时,上面的代码会添加一个类,然后在#draggable
被删除到#droppable
时替换该类。 此外,当两个元素不再相交时,将删除.hoverClass
。 这是jsfiddle的一个工作示例 。
希望有所帮助。
我发现有趣的是使用回调提供的准备好的ui对象,所以你不必再次进行dom查询。 每次小的性能提升都很好,特别是在使用拖放时;-) …
over: function(e, ui) { $(ui.helper[0]).addClass("success"); }
…
最好。
没试过,但我首先想到的是收集你希望它改变class级的区域的x,y坐标,高度,宽度。 然后,假设您可以获取被拖动对象的x,y坐标,当对象在这些边界内时,添加类,当外部移除类时。