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

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

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

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

jQuery

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

Q&A

1回答

3231閲覧

【jQuery】insertAfterした要素を元の場所に戻す方法

decteckaaaaaaaa

総合スコア18

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2019/09/24 13:05

標題の通り、insertAfterしたDOMを元の場所に戻す良い方法はありますか?

サンプルコード

jQuery

1 <section> 2 <div class="koko"> 3 <p>この下に移動してくる</p> 4 </div> 5 <div class="moveParent"> 6 <ul class="move"> 7 <li>移動したい(元に戻したい)</li> 8 <li>移動したい(元に戻したい)</li> 9 </ul> 10 </div> 11 </section> 12 13 <script> 14 $(function() { 15 var winWidth = $(window).outerWidth(); 16 var navUA= navigator.userAgent; 17 // 画面幅が639px以下、または UAがiPhone 又は Androidスマートフォンの時 18 if (winWidth <= 639 || navUA.indexOf('iPhone') > 0 || navUA.indexOf('Android') > 0 && navUA.indexOf('Mobile') > 0) { 19 $('.move').insertAfter('.koko p'); 20 } else { 21 $('.moveParent').insertAfter('.koko'); 22 } 23});

わからないこと

①現状のコードでも、元の場所に移動できますが
本来やりたいコードはもっと複雑なため
イメージとしては....
「移動 → 移動」ではなく「移動 → 復元」のようにできないかなと思っています。

②また、現状「.moveParent」を残していますが
できればSPの時(子要素がない時)はremoveしたいと思っています。
元の位置に移動する際に.wrapなどで処理すればいいかなと思っていますが
これも良い案があれば教えていただきたいです。

前提として、PCSP同じDOM構造で再現できないデザイン要件は避けるべきだとは
存じておりますが、またPCとSPでDOM自体を分けるなども検討しましたが
運用上こちらの方が手間が少なそうなため教えていただきたいです。

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

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

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

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

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

jun68ykt

2019/09/24 14:17

ご質問①の要件を確認させてください。 > 「移動 → 復元」のようにできないかなと思っています。 とのことですが、復元とは、「元の状態に復旧させる」という意味だと思いますが、このご質問で、元の状態に相当するのが、ご質問に挙げられているHTMLであるという解釈でよいのでしょうか? あるいは、元の状態に相当するHTMLは、ご質問に挙げられているHTMLとは別のもので、その元の状態に相当するHTMLを回答することも、このご質問では求められているという解釈でよいのでしょうか?
decteckaaaaaaaa

2019/09/24 16:04

ご確認ありがとうございます。 >復元とは、「元の状態に復旧させる」という意味だと思いますが、このご質問で、元の状態に相当するのが、ご質問に挙げられているHTMLであるという解釈でよいのでしょうか? 上記で間違いありません。 >元の状態に相当するHTMLは、ご質問に挙げられているHTMLとは別のもの ややこしく失礼しました。 実際に実装したいHTMLは別物になりますが、かなり複雑なため 質問用に簡易的なHTMLサンプルを用意させていただきました。
guest

回答1

0

.moveを.koko pの後ろに持ってきて.moveParentを削除する場合
逆の手順は.kokoの後ろにmoveParentクラスをつけたdivを新たにつくって
その中に.moveをappendすることになります

あとは、文字通り取っておいて戻す

javascript

1<script> 2$(function(){ 3 $('section').attr('data-html',function(){return escape($(this).html());}); 4 $('#idou').on('click',function(){ 5 console.log($('section').prop('outerHTML')); 6 $('.koko').append($('.move')); 7 }); 8 $('#modosu').on('click',function(){ 9 $('section').html(function(){return unescape($(this).data('html'));}); 10 }); 11}); 12</script> 13<section> 14test 15<div class="koko"> 16<p>この下に移動してくる</p> 17</div> 18test 19<div class="moveParent"> 20<ul class="move"> 21<li>移動したい1(元に戻したい)</li> 22<li>移動したい2(元に戻したい)</li> 23</ul> 24</div> 25test 26</section> 27<input type="button" value="移動" id="idou"> 28<input type="button" value="戻す" id="modosu">

投稿2019/09/25 00:32

編集2019/09/25 00:51
yambejp

総合スコア114837

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

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

decteckaaaaaaaa

2019/09/28 08:55

ご回答ありがとうございます!まさにこれがやりたかったです! 浅識で恐縮なのですがスクリプト部分、処理の詳細を教えていただきたく、、、 具体的にどういったことを行っているのでしょうか?? $('section').attr('data-html',function(){  return escape($(this).html());  }); ↑①section内のhtml情報を取得する? $('#idou').on('click',function(){  console.log($('section').prop('outerHTML')); $('.koko').append($('.move')); }); ↑②ここは単純に.kokoの後ろにmoveを移動させている $('#modosu').on('click',function(){  $('section').html(function(){   return unescape($(this).data('html'));  }); }); ↑③元に戻す data-htmlを取得することで、元々のDOM情報を取得することができる。 そして、escapeで保存することができる。 unescapeすることで、escapeで保存したDOM情報を適用する という処理になるでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問