У меня есть список элементов, которые я хотел бы сделать сортируемыми и изменяющими размер с помощью пользовательского интерфейса Jquery. Их объединение отлично работает в Chrome и Firefox. Но в IE8 (как в обычном режиме, так и в режиме совместимости) любое поведение прекрасно работает при использовании по отдельности, но в сочетании нежелательно получающееся в результате смешанное поведение.
Я ожидаю, что изменение размера элемента путем перетаскивания маркеров изменения размера не также активирует поведение сортировки и перемещает этот элемент. К сожалению, когда я перетаскиваю области изменения размера элемента, он также перетаскивает элемент, как если бы я перемещал его позицию сортировки. Я хочу, чтобы эти два поведения были исключительными. Вот код, который воспроизводит поведение:
<!DOCTYPE html>
<html>
<head>
<link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.resizable.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.sortable.js"></script>
<style type="text/css">
.item { width: 200px; height: 20px; border: 1px solid gray; float: left; }
</style>
<script type="text/javascript">
$(document).ready(function(){
$(".item").resizable({
start:function() {
$("#wrapper").sortable("disable");
},
stop:function() {
$("#wrapper").sortable("enable");
}
});
$("#wrapper").sortable({
items:".item"
});
});
</script>
</head>
<body>
<div id="wrapper">
<div class="item">a</div><div class="item">b</div><div class="item">c</div><div class="item">d</div>
</div>
</body>
</html>
Я пробовал несколько стратегий для решения этой проблемы, в том числе:
- Приведенный выше подход, который пытается отключить сортировку при запуске изменения размера. К сожалению, это ни на что не влияет.
- Наличие функции запуска изменяемого размера добавляет класс к элементу, а затем наличие сортируемого фильтра по этому классу (например, $("#wrapper").sortable({items:".item:not(.resizing)"}); и $ ("#wrapper").sortable({items:".item", cancel:".resizing"}); )
- Несколько вариантов того, какие селекторы используются для сортировки и изменения размера.
- Обширное гугление, биение головой о стол и бормотание в общем направлении Microsoft.
Любая помощь приветствуется.