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

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

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

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

jQuery

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

Q&A

解決済

3回答

3484閲覧

タグの属性のみコピーしたものを複製したい

castail

総合スコア117

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2015/10/10 02:59

タグの属性のみコピーしたものを複製したいです。

具体的には以下の構成で、

lang

1<div class="hoge"> 2<a href="XXXXXX" class="hoge2" 属性1 〜 属性6 > 3<p>........</p> 4<div>..........</div> 5<span>..........</span> 6</a> 7<div class="hoge3"></div> 8</div> 9 10▼繰り返し

以下のように、連続する「hoge」内の「hoge2」の内部構成を抜いたaタグの属性のみをコピーしたものを「hoge3」の直前にコピーしたいです。

lang

1<div class="hoge"> 2<a href="XXXXXX" class="hoge2" 属性1 〜 属性6 > 3<p>........</p> 4<div>..........</div> 5<span>..........</span> 6</a> 7<a href="XXXXXX" class="hoge2" 属性1 〜 属性6 >詳しく見る</a> 8<div class="hoge3"></div> 9</div> 10 11▼繰り返し

複製されたaタグ内には「詳しく見る」という文字列を挿入したいです。

ご注意点としては、aタグにはhref・class意外に6つ程度の属性が付随するのでそれらも全て引き継ぎたいです。
また「hoge」要素は連続して存在し動的に数は変わります。

ご教授の程よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

javascript

1$(function(){ 2 $(".hoge2").each(function(){ 3 var copyAnchor = $(this).clone(); 4 copyAnchor.html("詳しく見る"); 5 $(this).after(copyAnchor); 6 }); 7});

これでどうですかね

CodePen訂正しました。

投稿2015/10/10 06:10

seekseep

総合スコア12

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

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

castail

2015/10/10 07:14

ご回答ありがとうございます。 せっかくご回答頂いたのに誠に恐縮ですが先にご回答頂いたLhankor_Mhy様をベストアンサーとさせて頂きます。
guest

0

初めての回答なんで適切に答えられているかわからないですけど

HTMLがこれで

<div class="hoge"> <a href="http://google.com" class="hoge2" data-attr1="one" data-attr2="two" data-attr3="three" data-attr4="four" data-attr5="five" data-attr6="six" > <p>Paragraph text</p> <div>Division text</div> <span>Span text</span> </a> <div class="hoge3"></div> </div>

Javascript がこれです。

$(function(){ $(".hoge2").each(function(){ var copyAnchor = $(".hoge2").clone(); copyAnchor.html("詳しく見る"); $(this).after(copyAnchor); }); });

CodePenで実際に動かしてみました。

JSを説明していくと

これでA要素をコピーします。
コピーしなければ元の要素が移動されてしまいます。

var copyAnchor = $(".hoge2").clone();

コピーされたA要素の中身を変更します。

copyAnchor.html("詳しく見る");

最後にコピー元の直後に挿入します。

$(this).after(copyAnchor);

投稿2015/10/10 04:22

seekseep

総合スコア12

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

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

castail

2015/10/10 04:42

ご回答ありがとうございます。 こちら「.hoge」が1つであればうまくいくのですが、「.hoge」は複数存在し、それぞれ1つづつに処理を加えたいのですが、その方法をお教え願えますか?
guest

0

ベストアンサー

こんな感じで。

javascript

1$('.hoge .hoge2').clone().empty().text('詳しく見る').insertBefore('.hoge3')

追記訂正
ちがった、こうですね。

javascript

1$('.hoge').each(function(){ 2 var target = $(this); 3 $('.hoge2', target).clone().empty().text('詳しく見る').insertBefore($('.hoge3',target)); 4});

投稿2015/10/10 04:14

編集2015/10/10 04:35
Lhankor_Mhy

総合スコア36074

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

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

castail

2015/10/10 04:42

ご回答ありがとうございます。 こちら「.hoge」が1つであればうまくいくのですが、「.hoge」は複数存在し、それぞれ1つづつに処理を加えたいのですが、その方法をお教え願えますか?
Lhankor_Mhy

2015/10/10 04:52

すみません、訂正した方のコードであれば動作すると思います。
castail

2015/10/10 07:12

ご回答ありがとうございます。 ご教示頂いた内容でうまく動作いたしました! 誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問