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

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

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

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1457閲覧

JQuery removedClass

Rin_

総合スコア12

jQuery

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/08/26 08:28

編集2017/08/26 08:39
HTML <div class="change-btn prev-btn">← 前へ</div> <div class="change-btn next-btn">次へ →</div> <ul class="slides"> <li class="slide active"><img src="hoge1.jpg"></li> <li class="slide"><img src="hoge2.jpg"></li> <li class="slide"><img src="hoge2.jpg"></li> <li class="slide"><img src="hoge2.jpg"></li> </ul> CSS .slide { display: none; } .active { display: block; } Jquery $('.change-btn').click(function() { var $displaySlide = $('.active'); // 変数$displaySlideからactiveクラスを取り除いてください $displaySlide.removeClass('active'); if ($(this).hasClass('next-btn')) { $displaySlide.next().addClass('active'); } else { $displaySlide.prev().addClass('active'); } }); }); ```Jquery スライド切り替えプログラムについて質問 以上のプログラムで簡単なスライド画像の切り替えしているのですが 何故正常に動いているのか理解できません。 簡潔に書きますと ```ここに言語を入力 $displaySlide.removeClass('active'); $displaySlide.next().addClass('active');

//activeクラスを取り除いた後に、$displaySlide.nextが正常に機能し、次の要素にactiveが追加できるのかがわかりません。 removeしたあとHTMLにはactiveクラスが存在しないため、nextメソッドがエラーになるのではないでしょうか

よろしくお願いいたします

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

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

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

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

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

kei344

2017/08/26 08:34

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答2

0

ベストアンサー

activeクラスを取り除いた後に、$displaySlide.nextが正常に機能し、次の要素にactiveが追加できるのかがわかりません。 removeしたあとの$displaySlideの値は空になっているのではないでしょうか。

removeClassメソッドによってactiveクラスが削除されたとしても**activeクラスが設定されていた要素は残っています**。

javascript

1var array = ["a", "b", "c"]; 2var var1 = array[0]; 3array[0] = "d"; 4console.log(var1);// a

投稿2017/08/26 08:37

s8_chu

総合スコア14731

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

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

Rin_

2017/08/26 09:04

ご回答ありがとうございます。 $displaySlide.removeClass('active');によって 変数$displaySlideの値に変化は怒らないことは理解できました。 $displaySlide.next().addClass('active'); についてなのですが こちらは HTMLのactiveクラスが付いている要素の次の要素にactiveクラスを付ける  という風に考えております とすると先ほどremoveした段階でHTMLにはactiveクラスが存在しないのでエラーになるのではないか と思っているのですが何か認識を間違っているのでしょうか お手数ですがよろしくお願いいたします。
s8_chu

2017/08/26 09:15

> 先ほどremoveした段階でHTMLにはactiveクラスが存在しないのでエラーになるのではないか `removeClassメソッド`を実行しても`変数$displaySlide`の値に変化はなく、**`activeクラス`が設定されていた要素**を指しています。つまり、`$displaySlide.next().addClass('active');`が行っていることを言葉に直すと、「`activeクラス`が設定されていた要素(`$displaySlide`)の次にある要素(`next()`)に`activeクラス`を設定する(`addClass('active')`)」ということになります。
Rin_

2017/08/26 10:00

ご丁寧な回答ありがとうございます。 完全に理解できました。 $displaySlide.removeClass('active'); によって変数の値が変わっていると思っていたこと >>`activeクラス`が設定されていた要素(`$displaySlide`) 変数にクラスを代入した際の働きについて知識不足でした。 本当にありがとうございます。
guest

0

removeしたあとHTMLにはactiveクラスが存在しないため

.next()のように空カッコで呼び出すと、無条件に次の要素を取ってきます。

投稿2017/08/26 08:34

maisumakun

総合スコア145184

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

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

Rin_

2017/08/26 09:08

ご回答ありがとうございます。 >.next()のように空カッコで呼び出すと、無条件に次の要素を取ってきます。 無条件に次の要素というのは、今回の場合activeクラスの次の要素ということでしょうか? この段階ではすでにactive要素はremoveされており、存在しないと考えているのですが何か間違えていますでしょうか。 よろしくお願いいたします
maisumakun

2017/08/26 09:16 編集

一度$()で選択すると、最初に選択したときのものがそのまま引き継がれています。途中でremoveClassしても何も変わりません。 また、s8_chuさんの回答にあるように、removeClassしてもクラスが外れるだけで要素は消えません。
Rin_

2017/08/26 10:01

ご回答ありがとうございます。 お二人のご回答でやっと理解できた気がします。 お世話になりました これからも何かありましたらよろしくお願いいたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問