jquery-uiの並べ替え可能なインタラクションを使用しています。チェックされているときにソート可能なインタラクションを無効にするチェックボックスが必要です。リストの順序とチェックボックスのステータスの両方がmysqlデータベースに保存され、phpコードを使用して動的にロードされ、ajaxで更新されます。以下のコードは、リストのソート可能性ステータスがページが最初にロードされたときのチェックボックスステータスと一致しないことを除いて、すべてに対して機能します。初めてチェックボックスをオンにすると、すべて正常に機能します。php変数$itemsはリストを保持するオブジェクトであり、$lockは「チェック済み」または「チェックなし」のいずれかを保持します。
<head>
<script>
$(function() {
$("#sortable").sortable({stop:function(i) {
$.post('/index.php/welcome/process_sort', $("#sortable").sortable("serialize"))
}})
});
</script>
<script>
$(function() {
$("#disabler").change(function() {
if (this.checked) {
$("#sortable").sortable( "option", "disabled", true );
} else {
$("#sortable").sortable("option", "disabled", false);
}
})
});
</script>
</head>
<body>
<input type="checkbox" id="disabler" value="disabler" <?php echo $lock ?> >disable<br> </input>
<ul id="sortable">
<?php
foreach ($item as $row) {
$my_id = "id_".$row->id_items;
$my_text = $row->text;
?>
<li id=<?php echo"$my_id" ?> name=<?php echo"$my_id" ?> value=<?php echo "$my_text"?> class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"> </span><?php echo "$my_text"?></li>
<?php
}
?>
</ul>
</body>
jquery ifブロックを含む$(document).ready関数を追加しようとしましたが、ソート可能な相互作用が壊れました。