Как выделить область перетаскивания при наведении с помощью jQuery ui draggable

У меня на самом деле есть два вопроса, on в названии является основным. У меня есть несколько элементов div на странице, помеченной как droppable. Внутри этих элементов div, у меня есть пролеты, которые помечены как таковым. Я хочу, чтобы это было так, когда вы перетаскиваете элемент, и он завис над капельной областью, которая либо выделяет, либо имеет границу, чтобы они знали, что могут ее там бросить.

в качестве вторичного вопроса все мои перетаскиваемые элементы имеют дисплей: блок, ширину и поплавок на они, поэтому они выглядят красиво и аккуратно в моих droppable областях. Когда предметы отбрасываются, они, кажется, получают положение, установленное для них, поскольку они больше не плавают красиво и аккуратно, как остальные мои предметы. Для справки, вот мой javascript.

$('.drag_span').draggable({
    revert: true
});
$('.drop_div').droppable({
    drop: handle_drop_patient
});

function handle_drop_patient(event, ui) {
    $(this).append($(ui.draggable).clone());
    $(ui.draggable).remove();
}

3 ответов


проверить http://jqueryui.com/demos/droppable/#visual-feedback.

Ex:

$( "#draggable" ).draggable();
$( "#droppable" ).droppable({
    hoverClass: "ui-state-active",
    drop: function( event, ui ) {
        $( this )
            .addClass( "ui-state-highlight" )
            .find( "p" )
                .html( "Dropped!" );
    }
});
$( "#draggable2" ).draggable();
$( "#droppable2" ).droppable({
    accept: "#draggable2",
    activeClass: "ui-state-hover",
    drop: function( event, ui ) {
        $( this )
            .addClass( "ui-state-highlight" )
            .find( "p" )
                .html( "Dropped!" );
    }
});

Это должно работать для добавления выделения при наведении.

$('.drop_div').droppable({
     hoverClass: "highlight",
     drop: handle_drop_patient,
});

затем создайте класс css для выделить это устанавливает границу или изменяет цвет фона или все, что вы хотите.

.highlight {
    border: 1px solid yellow;
    background-color:yellow;
}

что касается позиции, вы можете повторно применить css после завершения падения.

function handle_drop_patient(event, ui) {
     $(this).append( $(ui.draggable).clone().css({'float':'left','display':'block'}) );
     $(ui.draggable).remove();
}

FYI:hoverClass был осужден в пользу classes. Теперь должно быть:

$('.drop_div').droppable({
    classes: {
      'ui-droppable-hover': 'highlight'
    },
    drop: handle_drop_patient
});