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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

840閲覧

jqueryのcloneメソッドについて

web11

総合スコア52

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/21 12:02

編集2020/05/21 16:21

jqueryでsetIntervalの中で予めcloneでコピーしたものに書き換える際に、
2回目以降正しくcloneがなされないようで、勝手にonクラスがついてしまいます。
(現在はcloneを使わずに変数の中にhtmlタグを入れると上手くいっています。)
また、if文で初期化して時間差で「on」クラスを付けるようにしているのですが、2回目以降のifでonが付きません。
そちらも合わせて教えていただけると助かります。

html

1<ul id="bg_slider"> 2 <li class="bg_01"></li> 3 <li class="bg_02"></li> 4 <li class="bg_03"></li> 5 </ul>

javascript

1$(function(){ 2 var count = 0; 3// var clone = $("#bg_slider li").clone(); 4//こちらでは、上手く処理されます。 5 var clone = '<li class="bg_01"></li><li class="bg_02"></li><li class="bg_03"></li>'; 6 7 var bg_slider = function(){ 8 9 $("#bg_slider li").eq(count).addClass("on"); 10 count++ 11 if (count == $("#bg_slider li").length + 1){ 12 $("#bg_slider li:not(:last-child)").remove(); 13 $("#bg_slider").append(clone); 14 count = 1; 15 16 $(document).delay(10).queue(function(){ 17//2回目以降処理がなされない、またdelayしないとonの中に書いたtransitionが起動しない。 18 $("#bg_slider li:nth-child(2)").addClass("on").dequeue(); 19 count = 2; 20 }); 21 } 22 } 23 24 bg_slider(); 25 setInterval(bg_slider, 2600); 26});

追記

イメージ的にはこちらのサイトのような背景スライドショーを作成しています。
https://vegas.jaysalvat.com/

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

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

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

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

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

yambejp

2020/05/21 15:17 編集

結局意図している動作はどういうものなのでしょか? 2.6秒に一度なにかをしたいのでしょうけど・・・
web11

2020/05/21 16:17

申し訳ありません、単純な背景のスライドショーです。 イメージ的にはこちらのサイトのようなものが、やりたかったです。 https://vegas.jaysalvat.com/ js側ではcssのつけ外しのみを行いまして、cssのtransitonの方でアニメーションはつけています。 (特に処理の部分とは関係ない部分だったので省かせて頂きました。) setIntervalさせて、最後のスライドショーでonクラスを削除する場合だと、最初のcssに戻るアニメーションが実行されてしまうので、わざわざ、最後以外のliを削除して新たにliを追加してonクラスを付けるようにしたかったです。
guest

回答1

0

ベストアンサー

こんにちは、jQueryのクローンメソッドは無理そうなので、下のようにしたらどうでしょう

Javascript

1var clone = $("#bg_slider").html().trim();

それから、delayメソッドのところはnextをつかってみてはどうでしょう

Javascript

1$(document) 2 .delay(10) 3 .queue(function (next) { 4 //2回目以降処理がなされない、またdelayしないとonの中に書いたtransitionが起動しない。 5 $("#bg_slider li:nth-child(2)").addClass("on"); 6 count = 2; 7 next(); 8 }); 9

投稿2020/05/21 14:23

fake_shibe

総合スコア806

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

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

web11

2020/05/21 15:40

回答ありがとうございます。 クローンメソッドの件解決しました。 また後学のために、クローンメソッドだとなぜ、できないか分かったりしますか? (変な挙動になるというか...) queueにコールバック渡して削除できるんですね、知らなかったです。 また、thisに変更すればdequeueも効くようになりました。
fake_shibe

2020/05/21 15:48

クローンは自分もよく分かりませんね。
web11

2020/05/21 16:22

なるほど... ありがとうございました。 .html().trim();でも似たような事できるので、余り気にしなくても良さそうですね。 自分でも、もう少し調べてみます。 ベストアンサーに選ばせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問