質問編集履歴

1 初心者マークの表示

suisuin

suisuin score 17

2017/02/13 18:17  投稿

リストタグのUp&Down移動をlocalStorageに保存したい。
繰り返し追加したリストにて、テキストエリアの入力内容は自動で保存できたのですが、リストタグのUp&Downによる移動の並びが保存できず困っています。
初心者で詳しくないのですが恐らく、UPとDOWNボタンでクリックしたときに並びが保存できればOKかと思うのですがうまくいきません。
リストの移動では、Sortableが良く使われているようですが他と組み合わせると動かなかったので下記のコードでは別の手法にしています。
どうかご教授お願いいたします。
```ここに言語を入力
<button id="add" class="butt">追加</button>
<button id="reset">リセット</button>
<table>
<ul id="ul_li_SubCategories" class="foo chargeCapturetable margin0"></ul>
</table>
<button id="upid" class="upbutton">Up</button><button id="downid" class="downbutton">Down</button>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
//リストUpDown
$(document).on('click', '.liEllipsis', function(){
$('.selected').removeClass('selected');
$(this).addClass('selected');
});
$('.upbutton').on('click', function () {
var $currentElement = $('#ul_li_SubCategories .selected');
moveUp($currentElement);
});
$('.downbutton').on('click', function () {
var $currentElement = $('#ul_li_SubCategories .selected');
moveDown($currentElement);
});
var moveUp = function ($currentElement) {
var hook = $currentElement.prev('.liEllipsis');
if (hook.length) {
var elementToMove = $currentElement.detach();
hook.before(elementToMove);
}
};
var moveDown = function ($currentElement) {
var hook = $currentElement.next('.liEllipsis');
if (hook.length) {
var elementToMove = $currentElement.detach();
hook.after(elementToMove);
}
};
//
//ローカルストレージ
var initData = [];
var listString = "";
function initialize(){
$.each(initData, function(key, value) {
$("#ul_li_SubCategories").prepend('<li class="liEllipsis"><textarea class="taF22 textBox1"></textarea><button class="delete">削除</button></li>');
});
}
if (localStorage.getItem("ul_li_SubCategories")) {
$("#ul_li_SubCategories").html(localStorage.getItem("ul_li_SubCategories"));
} else {
initialize();
}
$("#add").click(function() {
$("#ul_li_SubCategories").prepend('<li class="liEllipsis"><textarea class="taF22 textBox1"></textarea><button class="delete">削除</button></li>');
localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html());
});
$("#ul_li_SubCategories").on("keyup", ":input", function(){
$.each($("textarea"), function(key, input){
$(input).text($(input).val());
});
localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html());
});
$("#ul_li_SubCategories").on("click", ".delete", function() {
$(this).parent().remove();
localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html());
});
$("#reset").click(function(){
$("#ul_li_SubCategories").empty();
initialize();
localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html());
});
$("#ul_li_SubCategories li").sortable({
cancel: ":input,button,textarea,.liEllipsis",
update: function() { localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html()); }
});
$("#ul_li_SubCategories li").on("focusout", function() {
localStorage.setItem("ul_li_SubCategories", $("#ul_li_SubCategories").html());
});
</script>
```
  • JavaScript

    34876 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る