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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

jQuery

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

Q&A

解決済

1回答

2349閲覧

WordPressでJqueryを使用しタブをクリックするとスライドダウンするはずの要素が動かない。

Asibe

総合スコア14

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

jQuery

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

0グッド

0クリップ

投稿2017/04/12 08:48

編集2017/04/12 11:56

現在、WordPressでWebページを作成してJqueryを利用している箇所でうまくいかず、自分では解決できそうもないので質問をさせていただきます。皆様のお力をお貸しください・・・よろしくお願いいたします。

やりたいことと現状の写真
↓640pxまでのアコーディオン状態ですべて閉じている状態。
イメージ説明

↓アコーディオンを開いている状態で"閉じる"のボタンを押すとアコーディオンが閉じる(下記のJqueryコードのif(jQuery('.Section').size() > 0){からがこの閉じるボタンのコードです。
イメージ説明

↓アコーディオンをそれぞれクリックすると中身がスライドダウンして、その前に開いていたアコーディオン箇所はスライドアップし閉じます。
イメージ説明

↓WordPress化させて動かない原因
イメージ説明

↓WordPressで対象の部分を"開発者ツール"で確認した際のエラー箇所
イメージ説明

※HTMLコードとCSSコードを入れようとしましたが、文字数を超えてしまうので投稿できませんでした。

なので、下記のCodepenさんのURLのソースさんを元にお願いします。

#参考
codepen:http://codepen.io/kazmeyer/pen/lzqhf

#やりたいこと

Jquery

1 jQuery(function($){ 2 var $accordion = jQuery('.tab_drawer_heading'); 3 4 jQuery(".tab_content").hide(); 5 jQuery(".tab_content:first").show(); 6 7//タブモード(768px時) 8 jQuery(".tabs li").click(function(){ 9 jQuery(".tab_content").hide(); 10 11 var activeTab = '#' + $(this).attr("rel"); 12 13 jQuery(activeTab).fadeIn(); 14 15 jQuery(".tabs li").removeClass("active"); 16 jQuery(this).addClass("active"); 17 jQuery(".tab_drawer_heading").removeClass("d_active"); 18 jQuery(".tab_drawer_heading[rel^='"+activeTab+"']").addClass("d_active"); 19 }); 20 21 //アコーディオンモード(640px時まで) 22 jQuery(".tab_drawer_heading").click(function(){ 23 jQuery(".tab_content").hide(); 24 jQueryaccordion.removeClass('open_close'); 25 jQuery(this).addClass('open_close'); 26 27 var d_activeTab = '#' + $(this).attr("rel"); 28 jQuery(d_activeTab).slideDown(); 29 jQuery(".tab_drawer_heading").not($(d_activeTab).slideUp()); 30 jQuery(".tab_drawer_heading").removeClass("selected"); 31 jQuery(this).addClass('selected'); 32 jQuery(".tabs li").removeClass("active"); 33 jQuery("ul.tabs li[rel^='"+d_activeTab+"']").addClass("active"); 34 }); 35 36if(jQuery('.Section').size() > 0){ 37 //コンテンツの数 38 var slideContentNum = jQuery('.tab_drawer_heading').length; 39 //コンテンツ分のフラグ 40 var navFlag = new Array(); 41 for( i = 0 ; i < slideContentNum ; i++ ){ 42 navFlag[i] = true; 43 }; 44 jQuery(".Section #close").click(function(){ 45 var closeNum = (jQuery(this).parents('.tab_drawer_heading').index()); 46 jQuery(this).parents('section').slideUp('fast'); 47 jQueryaccordion.removeClass('open_close'); 48 jQuery(this).parents('section').prev('a').removeClass('.Section'); 49 navFlag[closeNum] = true; 50 }); 51 } 52 });

#試したこと
上記のJqueryコードで、タブモード(768px)の時はクリックしたタブの中身以外をフェードアウトし、クリックしたタブの中身をフェードインするのはうまくいくのですが、
問題が、アコーディンモード(640px時)で対象としているクラス部分をクリックするとスライドダウンし他の選択しなかった箇所は隠れるようになっていますが、Bracketsの方でWordPressに変更前だと動くのですが・・・

個人的に試してみるとどうも
var d_activeTab = '#' + $(this).attr("rel");

の選択してた複数要素を操作する箇所が問題を起こしているのか。
普通にjQuery(".tab_drawer_heading").click(function(){のクリック箇所を押すとほかの要素ごとスライドダウンしたり要素自体がなくなってしまいます。

#補足
上記のWordPressのエラーコード(yu-campaign.js)の24行目がないぞと言われてます。
※yu-campaign.jsは、上記のJqueryコードです。

その24行目が
jQueryaccordion.removeClass('open_close');

となっているので"open_close"が見つからないんだがと言われますが、対象のアコーディオン部分をクリックする前にはエラーが出てきませんでした。その後アコーディオンの箇所をクリックし、開いている箇所が閉じると上記のWordPressのエラー画像がでます。

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

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

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

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

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

MasakazuFukami

2017/04/12 10:45

スイマセン上記の文章からでは質問者様が抱えている問題の事象が何かわかりません。端的に「どう動いてほしいのか」「現状どうなっているか」を書いて下さい。
Lhankor_Mhy

2017/04/12 11:11

補足願います。codepenのコードとご提示のコードがずいぶん違うようですが、どちらが正しいのですか? また、jQueryaccordionというのは何かのプラグインとかでしょうか。コードを参照できるURLをご提示ください。
Lhankor_Mhy

2017/04/12 11:57 編集

あ、もしかして、$accordionという変数を使っていたところ、$とjQueryをテキスト置換してできたのがjQueryaccordionという変数名だったりして?
yuki84web

2017/04/12 11:25

ブラウザの開発者ツールのコンソールにエラーが出力されていれば掲載してください
Asibe

2017/04/12 11:29

MasakazuFukami様お返事ありがとうございます。現状がわかるように写真と説明を添付し更新いたしました。
Asibe

2017/04/12 11:31

Lhankor_Mhy様、codepenのコードを元に少し改良を加えております。プラグインは利用していません。コードを参照できるURLのやり方がわからないので困ってますね
Asibe

2017/04/12 11:41

yuki84web様お返事ありがとうございます。Chromeの開発者ツールでエラーを確認した際に出た画像を記載いたしまた・・・いろいろとエラーが出ていますので確認してみます。
guest

回答1

0

ベストアンサー

jQueryaccordion$accordionに変更してみてください。

あと、これ読んでみてください。

英語に怯まない

プログラマたる者、人に頼る前にこれぐらいはやっておきたい - Qiita

投稿2017/04/12 11:55

Lhankor_Mhy

総合スコア36074

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

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

Asibe

2017/04/12 12:15

Lhankor_Mhy様アドバイスありがとうございます。 jQUeryaccordionを$accordionに変更しましたらエラーはでなくなりました。 あとは、アコーディオンをクリックするとずっとスライドアップとダウンを繰り返す状態に陥っています。 まだどこかに原因があるようです。 リンク先を読んでみます。
Asibe

2017/04/12 12:17

詳しいエラーを見る場合はFireFoxよりもChromeの開発者ツールのほうがいいのでしょうか?
Asibe

2017/04/12 12:30

あと、上記のリンク先の通りによく英語の内容を読んでコードを変えながらやっていこうと思います。 ベストアンサーとさせていただきます。 ありがとうございました。
Lhankor_Mhy

2017/04/12 12:34

そりゃまあ、 jQuery(d_activeTab).slideDown(); jQuery(".tab_drawer_heading").not($(d_activeTab).slideUp()); とダウンした直後にアップするように書いてありますから、そのようになると思いますよ。
Lhankor_Mhy

2017/04/12 12:34

ああ、解決したんですね。それはよかった。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問