質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1380閲覧

要素追加時の連番処理とjquery ui sortableの組み合わせについて

nyamo

総合スコア21

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/05/27 17:49

編集2019/05/27 17:52

ボタンを押す事で、特定エリア内に連番を入れた要素を追加し、sortable()で並び替えをしているのですが、sortable()で並び替えをした後にappend()でさらに追加をすると連番処理が強制的に番号順になってしまいます。

単純にappend()後に追加した要素に対してeach()で連番処理を行っている為、強制的に番号順になってしまっているのですが、並び替えた後に追加しても並び替えた番号のまま追加する方法は何かないものでしょうか。

HTML

1<ul> 2<li class="item"> 3<button class="button"><span class="text">ああああ</span></button> 4</li> 5<li class="item"> 6<button class="button"><span class="text">いいいい</span></button> 7</li> 8<li class="item"> 9<button class="button"><span class="text">うううう</span></button> 10</li> 11</ul> 12 13<div class="container"> 14<ul class="list ui-sortable"></ul> 15</div>

javascript

1 $(document).ready(function () { 2 function updateNumber() { 3 $('.number_id').each(function (index) { 4 $(this).text(index); 5 }); 6 $('.number_item').each(function (index2) { 7 $(this).attr('data-group', index2); 8 }); 9 } 10 11 $(document).on("click", ".button", function (event) { 12 var $layout = $(".list"); 13 text = $(this).parent().find(".text").text(); 14 15 var $header = 16 '<div class="header">' + 17 '<span class="number_id">' + '</span>' + 18 '<span class="memo">' + text + '</span>' + 19 '</div>'; 20 21 var $content = 22 '<li class="number_item" data-group="">' + $header + '</li>'; 23 24 $layout.append($content); 25 updateNumber(); 26 }); 27 Draggable(); 28 }); 29 function Draggable() { 30 $(".list").sortable({ 31 handle: "div.header", 32 axis: 'y' 33 }); 34 }

下記のようにカウントすればできるのは分かっているのですが、今回は諸事情により使えないため他の方法を探しています。

javascript

1 $(document).ready(function () { 2 var count = 1; 3 $(document).on("click", ".button", function (event) { 4 var $layout = $(".list"); 5 text = $(this).parent().find(".text").text(); 6 7 var $header = 8 '<div class="header">' + 9 '<span class="number_id">' + count + '</span>' + 10 '<span class="memo">' + text + '</span>' + 11 '</div>'; 12 13 var $content = 14 '<li class="number_item" data-group="' + count + '">' + $header + '</li>'; 15 16 $layout.append($content); 17 count++; 18 }); 19 Draggable(); 20 });

もしわかる方がいらっしゃいましたらお教え頂けると幸いです。
よろしくお願い致します。
jsfiddleのソースコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

属性に持たせていいのならこうかな

$('.number_id').each(function (index) { $(this).text(index); }); '<span class="number_id">' + '</span>' +

$('.number_id').each(function (index) { $(this).text($(this).data('number')); }); '<span class="number_id" data-number="'+$('div').length+'">' + '</span>' +

投稿2019/05/27 18:47

hentaiman

総合スコア6415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2019/05/27 19:44

カウントしたくないって書いてありましたね
nyamo

2019/05/28 02:19

lengthで要素数を数える方法がありましたね……。 >>カウントしたくないって書いてありましたね count++をもちいたカウントアップでは要素を削除した場合などに対応できないので使用しませんでした。 $('div.header').lengthで思った通りの動きができました! ありがとうございます。
hentaiman

2019/05/28 02:36

余計なおせっかいかもしれませんが、要素の番号被ってもいいんですか? 被らないようにしつつ消した空いてる番号の最小値から使いたいなら消した番号保管しておくか毎回ループで使える番号の最小値チェックしなきゃいけません。
nyamo

2019/05/28 02:58

cookieやdbなどが一切使えない状況、また削除した番号は欠番にする開発なので、.empty().hide()で内側を削除→外側非表示で外側の要素数を数えています。 削除した番号は見た目状は欠番になりますので問題はありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問