It turns out, there's a way to do this. Have a peek at this demonstration. The key to providing this behavior is the
_rearrange() method. We need to find a way in here so we can make the item fade in once it changes position. Keep in mind, we're applying effects to the item that's moved as a result of dragging another item around. It'll fade into it's new position instead of just popping into it. Let's take a look at a custom implementation of the _rearrange() method._rearrange: function ( e, item ) {
if ( !this.options.effects ) {
return this._superApply( arguments );
}
var $item = $( item.item[ 0 ] );
$item.hide();
this._superApply( arguments );
$item.show( "fade", 325 );
}
The first thing that's done in this implementation of the method is to check that it's enabled. Our customization of the sortable widget adds an
effects option that when true, enables our behavior. It defaults to false, and this is especially important when overriding private widget methods — we should opt-in for the customized behavior. That way, the default widget behavior stays surprise-free.The actual implementation is pretty straightforward. The
$item variable holds the element we're going to animate. So, we hide it before making our call to the original _rearrange() method. This is done using _super(). At this point, the element has been relocated in the DOM structure. Now we can fade it into view.
No comments :
Post a Comment