Draggable не работает, когда родитель скрыт - PullRequest
2 голосов
/ 29 марта 2012

Следующая ошибка возникает только в IE8.

Демонстрация: http://tinyw.in/BLrg

Нажмите на шоу в информационном бюллетене 313. Если вы теперь наводите курсор мыши на синюю полосу слева, слой скользит, содержащий некоторые элементы.Вы можете перетащить каждый из этих элементов.Если вы начинаете перетаскивать слой, слайды возвращаются назад.Как вы видите, в IE8 перетаскиваемый элемент также скрывается, или, если вы перетащите его поверх, он может быть добавлен мгновенно.И это проблема, вы можете открыть его в IE9, Firefox, Chrome, и он работает.Чтобы увидеть, как это на самом деле должно работать.

Вот код, который можно найти в logic.frontend.js: (просто часть, которая фактически используется)

$( ".draggable li table" ).draggable({
    connectToSortable: ".sortable",
    helper: 'clone',
    revert: 'invalid',
    appendTo: 'body',
    start: function(ui) {
        $('#elementsContainer').hide('slide', {
             direction: "left"
        }, 500);   
}
});


var height = $('#elementsContainer').outerHeight();
$('#elementsContainerHandle').css('height', height);

$('#elementsContainerHandle').mouseenter(function() {
    $('#elementsContainer').css('visibility', 'visible');
    $('#elementsContainer').show('slide', { direction: "left" }, 500);
});

$('#elementsContainer').mouseenter(function() {
    $(this).css('visibility', 'visible');
});

$('#elementsContainer').mouseleave(function() {
    $(this).css('visibility', 'hidden');
});

Проблема в том,#elementsContainer становится скрытым, и поэтому все его дочерние элементы, включая перетаскиваемый элемент, также скрываются.В другом браузере .hide() не влияет на перетаскиваемый элемент из-за опции appendTo : 'body'.Но в IE8 это как-то ломается, хотя я совершенно уверен, что элемент добавляется в тело.Я попытался сделать перетаскиваемый объект видимым снова с помощью css, .show() и т. Д., Но не получил его.

Спасибо

...