多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Droppable Widget # Droppable Widget Categories: [Interactions](http://www.css88.com/jquery-ui-api/category/interactions/ "View all posts in Interactions") ## version added: 1.0 **Description:** 创建拖动元素的目标。 ## QuickNav[Examples](#entry-examples) ### Options - [accept](#option-accept) - [activeClass](#option-activeClass) - [addClasses](#option-addClasses) - [disabled](#option-disabled) - [greedy](#option-greedy) - [hoverClass](#option-hoverClass) - [scope](#option-scope) - [tolerance](#option-tolerance) ### Methods - [destroy](#method-destroy) - [disable](#method-disable) - [enable](#method-enable) - [option](#method-option) - [widget](#method-widget) ### Events - [activate](#event-activate) - [create](#event-create) - [deactivate](#event-deactivate) - [drop](#event-drop) - [out](#event-out) - [over](#event-over) jQuery UI拖放插件可以使所选元素可拖放(这意味着[draggables](draggable)拖动可以被拖放接受)。您可以指定哪个拖动被接受。 ### Dependencies(依赖性) - [UI Core](category/ui-core) - [Widget Factory](jQuery.widget) - [Mouse Interaction](mouse) ## Options ### accept**Type:** [Selector](http://api.jquery.com/Types/#Selector) or [Function](http://api.jquery.com/Types/#Function)() **Default:**`"*"`控制可拖动的元素被拖放接受。**支持多种类型:** - **Selector**: 一个选择器可拖动的元素。 - **Function**: 函数将被调用页面上的每一个可拖动的(传递给函数的第一个参数)。该函数必须返回`true`,如果可拖动应该接受。 **Code examples:** 使用指定的`accept`参数初始化一个droppable: ``` $( ".selector" ).droppable({ accept: ".special" }); ``` 在初始化后设置或者获取`accept`参数: ``` // getter var accept = $( ".selector" ).droppable( "option", "accept" ); // setter $( ".selector" ).droppable( "option", "accept", ".special" ); ``` ### activeClass**Type:** [String](http://api.jquery.com/Types/#String) **Default:**`false`如果指定了该参数,在被允许的draggable对象填充时,droppable会被添加上指定的样式。**Code examples:** 使用指定的`activeClass` 参数初始化一个droppable: ``` $( ".selector" ).droppable({ activeClass: "ui-state-highlight" }); ``` 在初始化后设置或者获取`activeClass`参数: ``` // getter var activeClass = $( ".selector" ).droppable( "option", "activeClass" ); // setter $( ".selector" ).droppable( "option", "activeClass", "ui-state-highlight" ); ``` ### addClasses**Type:** [Boolean](http://api.jquery.com/Types/#Boolean) **Default:**`true`如果设置为`false`, 可以防止`ui-droppable`类在进行时添加. 这可能会使在初始化数百个元素执行`.droppable()`时使性能得到理想的优化.**Code examples:** 使用指定的`addClasses` 参数初始化一个droppable: ``` $( ".selector" ).droppable({ addClasses: false }); ``` 在初始化后设置或者获取`addClasses`参数: ``` // getter var addClasses = $( ".selector" ).droppable( "option", "addClasses" ); // setter $( ".selector" ).droppable( "option", "addClasses", false ); ``` ### disabled**Type:** [Boolean](http://api.jquery.com/Types/#Boolean) **Default:**`false`如果设置为 `true`将禁止拖放。**Code examples:** 使用指定的`disabled` 参数初始化一个droppable: ``` $( ".selector" ).droppable({ disabled: true }); ``` 在初始化后设置或者获取`disabled`参数: ``` // getter var disabled = $( ".selector" ).droppable( "option", "disabled" ); // setter $( ".selector" ).droppable( "option", "disabled", true ); ``` ### greedy**Type:** [Boolean](http://api.jquery.com/Types/#Boolean) **Default:**`false`默认情况下,当一个元素被放到嵌套的放置(droppable)对象时,每个放置(droppable)对象都将接收到这个元素。然而,当设置这个选项为`true`时,任何父级的放置(droppable)对象不会接收元素。`drop`事件将依然会正常的泡沫,但`event.target`查看哪个放置(droppable)对象接受了拖动元素。**Code examples:** 使用指定的`greedy` 参数初始化一个droppable: ``` $( ".selector" ).droppable({ greedy: true }); ``` 在初始化后设置或者获取`greedy`参数: ``` // getter var greedy = $( ".selector" ).droppable( "option", "greedy" ); // setter $( ".selector" ).droppable( "option", "greedy", true ); ``` ### hoverClass**Type:** [String](http://api.jquery.com/Types/#String) **Default:**`false`如果设置了该参数,将在一个被允许的拖动元素悬停在放置(droppable)对象上时,向放置(droppable)对象添加一个指定的样式.**Code examples:** 使用指定的`hoverClass` 参数初始化一个droppable: ``` $( ".selector" ).droppable({ hoverClass: "drop-hover" }); ``` 在初始化后设置或者获取`hoverClass`参数: ``` // getter var hoverClass = $( ".selector" ).droppable( "option", "hoverClass" ); // setter $( ".selector" ).droppable( "option", "hoverClass", "drop-hover" ); ``` ### scope**Type:** [String](http://api.jquery.com/Types/#String) **Default:**`"default"`用来设置拖动(draggle)元素和放置(droppable)对象的集合, 除了droppable中的[`accept`](#option-accept)属性指定的元素外,和放置(droppable)对象相同集合的放置(droppable)对象也被允许添加到放置(droppable)对象中.**Code examples:** 使用指定的`scope` 参数初始化一个droppable: ``` $( ".selector" ).droppable({ scope: "tasks" }); ``` 在初始化后设置或者获取`scope`参数: ``` // getter var scope = $( ".selector" ).droppable( "option", "scope" ); // setter $( ".selector" ).droppable( "option", "scope", "tasks" ); ``` ### tolerance**Type:** [String](http://api.jquery.com/Types/#String) **Default:**`"intersect"`指定使用那种模式来测试一个拖动(draggable)元素"经过"一个放置(droppable)对象。 允许使用的值: - `"fit"`: 拖动(draggable)元素 完全重叠到放置(droppable)对象。 - `"intersect"`: 拖动(draggable)元素 和放置(droppable)对象至少重叠50%。 - `"pointer"`: 鼠标重叠到放置(droppable)对象上。 - `"touch"`: 拖动(draggable)元素 和放置(droppable)对象的任意重叠 **Code examples:** 使用指定的`tolerance` 参数初始化一个droppable: ``` $( ".selector" ).droppable({ tolerance: "fit" }); ``` 在初始化后设置或者获取`tolerance`参数: ``` // getter var tolerance = $( ".selector" ).droppable( "option", "tolerance" ); // setter $( ".selector" ).droppable( "option", "tolerance", "fit" ); ``` ## Methods(方法) ### destroy() 完全移除拖放功能. 这将使元素返回到之前的初始化状态. - 这个方法不接受任何参数 **Code examples:** 调用destroy 方法 ``` $( ".selector" ).droppable( "destroy" ); ``` ### disable() 禁用拖放。 - 这个方法不接受任何参数 **Code examples:** 调用disable 方法 ``` $( ".selector" ).droppable( "disable" ); ``` ### enable() 启用拖放。 - 这个方法不接受任何参数 **Code examples:** 调用enable 方法 ``` $( ".selector" ).droppable( "enable" ); ``` ### option( optionName )Returns: [Object](http://api.jquery.com/Types/#Object) 通过指定的`optionName`获取当前关联的值。 - **optionName**Type: [String](http://api.jquery.com/Types/#String)要获取值的选项名 **Code examples:** 调用这个方法: ``` var isDisabled = $( ".selector" ).droppable( "option", "disabled" ); ``` ### option()Returns: [PlainObject](http://api.jquery.com/Types/#PlainObject) 获取一个对象,它包含表示当前droppable的选项hash的键/值对。 - 这个方法不接受任何参数 **Code examples:** 调用这个方法: ``` var options = $( ".selector" ).droppable( "option" ); ``` ### option( optionName, value ) 通过指定的`optionName`,设置droppable的相关选项值。 - **optionName**Type: [String](http://api.jquery.com/Types/#String)要设置值的选项名。 - **value**Type: [Object](http://api.jquery.com/Types/#Object)要设置选项的值。 **Code examples:** 调用这个方法: ``` $( ".selector" ).droppable( "option", "disabled", true ); ``` ### option( options ) 为droppable设置一个或多个选项。 - **options**Type: [Object](http://api.jquery.com/Types/#Object)设置的选项/值对的对象。 **Code examples:** 调用这个方法: ``` $( ".selector" ).droppable( "option", { disabled: true } ); ``` ### widget()Returns: [jQuery](http://api.jquery.com/Types/#jQuery) 返回一个`jQuery` ,它包含了droppable元素。 - 这个方法不接受任何参数 **Code examples:** 调用widget 方法 ``` var widget = $( ".selector" ).droppable( "widget" ); ``` ## Events ### activate( event, ui )Type: `dropactivate` 这个事件会在任何允许的draggable对象开始拖动时触发。它可以用来在你想让droppable对象在可以被填充的时"亮起来"的时候。 - **event**Type: [Event](http://api.jquery.com/Types/#Event) - **ui**Type: [Object](http://api.jquery.com/Types/#Object) - **draggable**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表的拖动元素。 - **helper**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表被拖动元素的助手。 - **position**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的CSS的position(位置)对象,如`{ top, left }`。 - **offset**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的偏移位置对象,如`{ top, left }`。 **Code examples:** 使用指定的activate 回调初始化一个droppable: ``` $( ".selector" ).droppable({ activate: function( event, ui ) {} }); ``` 绑定一个事件监听到dropactivate事件: ``` $( ".selector" ).on( "dropactivate", function( event, ui ) {} ); ``` ### create( event, ui )Type: `dropcreate` 此事件会在droppable创建时触发。 - **event**Type: [Event](http://api.jquery.com/Types/#Event) - **ui**Type: [Object](http://api.jquery.com/Types/#Object) *注意:`ui`对象是空对象,包括是为了和其他事件的一致性。* **Code examples:** 使用指定的create 回调初始化一个droppable: ``` $( ".selector" ).droppable({ create: function( event, ui ) {} }); ``` 绑定一个事件监听到dropcreate事件: ``` $( ".selector" ).on( "dropcreate", function( event, ui ) {} ); ``` ### deactivate( event, ui )Type: `dropdeactivate` 此事件会在任何允许的draggable对象停止拖动时触发. - **event**Type: [Event](http://api.jquery.com/Types/#Event) - **ui**Type: [Object](http://api.jquery.com/Types/#Object) - **draggable**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表的拖动元素。 - **helper**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表被拖动元素的助手。 - **position**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的CSS的position(位置)对象,如`{ top, left }`。 - **offset**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的偏移位置对象,如`{ top, left }`。 **Code examples:** 使用指定的deactivate 回调初始化一个droppable: ``` $( ".selector" ).droppable({ deactivate: function( event, ui ) {} }); ``` 绑定一个事件监听到dropdeactivate事件: ``` $( ".selector" ).on( "dropdeactivate", function( event, ui ) {} ); ``` ### drop( event, ui )Type: `drop` 这个事件会在一个允许的拖动(draggable)元素填充进这个放置(droppable)对象时触发.(基于[`tolerance`](#option-tolerance)选项)。(愚人码头注释: 回调函数中, $(this) 表示被填充的droppable对象. ui.draggable 表示draggable对象.) - **event**Type: [Event](http://api.jquery.com/Types/#Event) - **ui**Type: [Object](http://api.jquery.com/Types/#Object) - **draggable**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表的拖动元素。 - **helper**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表被拖动元素的助手。 - **position**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的CSS的position(位置)对象,如`{ top, left }`。 - **offset**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的偏移位置对象,如`{ top, left }`。 **Code examples:** 使用指定的drop 回调初始化一个droppable: ``` $( ".selector" ).droppable({ drop: function( event, ui ) {} }); ``` 绑定一个事件监听到drop事件: ``` $( ".selector" ).on( "drop", function( event, ui ) {} ); ``` ### out( event, ui )Type: `dropout` 此事件会在一个允许的拖动(draggable)元素离开这个放置(droppable)对象时触发(基于[`tolerance`](#option-tolerance)选项)。 - **event**Type: [Event](http://api.jquery.com/Types/#Event) - **ui**Type: [Object](http://api.jquery.com/Types/#Object) *注意:`ui`对象是空对象,包括是为了和其他事件的一致性。* **Code examples:** 使用指定的out 回调初始化一个droppable: ``` $( ".selector" ).droppable({ out: function( event, ui ) {} }); ``` 绑定一个事件监听到dropout事件: ``` $( ".selector" ).on( "dropout", function( event, ui ) {} ); ``` ### over( event, ui )Type: `dropover` 此事件会在一个允许的拖动(draggable)元素经过这个放置(droppable)对象时触发(基于[`tolerance`](#option-tolerance)选项)。 - **event**Type: [Event](http://api.jquery.com/Types/#Event) - **ui**Type: [Object](http://api.jquery.com/Types/#Object) - **draggable**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表的拖动元素。 - **helper**Type: [jQuery](http://api.jquery.com/Types/#jQuery)一个jQuery对象代表被拖动元素的助手。 - **position**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的CSS的position(位置)对象,如`{ top, left }`。 - **offset**Type: [Object](http://api.jquery.com/Types/#Object)当前可拖动助手的偏移位置对象,如`{ top, left }`。 **Code examples:** 使用指定的over 回调初始化一个droppable: ``` $( ".selector" ).droppable({ over: function( event, ui ) {} }); ``` 绑定一个事件监听到dropover事件: ``` $( ".selector" ).on( "dropover", function( event, ui ) {} ); ``` ## Example: #### A pair of draggable and droppable elements. ``` <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>droppable demo</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"> <style> #draggable { width: 100px; height: 100px; background: #ccc; } #droppable { position: absolute; left: 250px; top: 0; width: 125px; height: 125px; background: #999; color: #fff; padding: 10px; } </style> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> </head> <body> <div id="droppable">Drop here</div> <div id="draggable">Drag me</div> <script> $( "#draggable" ).draggable(); $( "#droppable" ).droppable({ drop: function() { alert( "dropped" ); } }); </script> </body> </html> ```