Jquery UI を使用して、並べ替えとサイズ変更を可能にしたい要素のリストがあります。それらを組み合わせると、Chrome と Firefox でうまく機能します。しかし、IE8 では (通常ビューと互換ビューの両方で)、どちらの動作も個別に使用するとうまく機能しますが、組み合わせて使用すると、結果として生じる混合動作は望ましくありません。
私の期待は、サイズ変更可能なハンドルをドラッグして要素のサイズを変更しても、並べ替え可能な動作がアクティブ化されず、その要素が移動されないことです。残念ながら、要素のサイズ変更領域をドラッグすると、並べ替え位置を移動しているかのように要素もドラッグされます。2つの動作を排他的にしたい. 動作を再現するコードは次のとおりです。
<!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>
これに対処するために、次のようないくつかの戦略を試しました。
- サイズ変更の開始時にソート可能を無効にしようとする上記のアプローチ。残念ながら、これはまったく効果がありません。
- サイズ変更可能な start 関数でアイテムにクラスを追加し、そのクラスで並べ替え可能なフィルターを設定します (例: $("#wrapper").sortable({items:".item:not(.resizing)"}); および $ ("#wrapper").sortable({items:".item", cancel:".resizing"}); )
- ソート可能およびサイズ変更可能に使用されるセレクターに関するいくつかのバリエーション
- 大規模なグーグル検索、机の上で頭を叩き、マイクロソフトの一般的な指示についてつぶやきます。
どんな助けでも大歓迎です。