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

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

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

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

jQuery

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

Q&A

解決済

3回答

7036閲覧

jsのアコーディオンを無効化したい

hiro421

総合スコア63

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/01/20 03:02

編集2017/01/20 05:36

###前提・実現したいこと
jqueryでアコーディオンを実装しているんですが
次のようなjsが書かれている場合、処理を上書き、無効化することはできるのでしょうか。。
やりたいこととしては、クラスにアコーディオンが動く処理が書かれていて、
別の箇所でも同じクラスがつかわれているんですが、そこではアコーディオンを動かしたくない場合、
どのように書けばいいのか、いい方法があればアドバイスいただきたいです。
よろしくお願いいたします。

(クラスを分ければいいと思うのですが、使われている箇所が多岐に渡っているため、jsで対応できたらと思っています)

###該当のソースコード

javascript

1//アコーディオン処理 2$(".trigger").on('click', function() { 3 if ($(this).next().is(":visible")) { 4 $(this).removeClass("active-submenu"); 5 $(this).addClass("none-submenu"); 6 $("+.acoCont", this).slideUp(200); 7 } else { 8 $(this).addClass("active-submenu"); 9 $(this).removeClass("none-submenu"); 10 $("+.acoCont", this).slideDown(200); 11 } 12 }); 13 14//下記の構造になっているものはアコーディオンさせたくない 15var navNotList = '.categories .trigger, .trigger.stop'; 16$('.trigger').not(navNotList).on("click", function(e) { 17 //ここにどういった処理を記述すれば実現可能なのかご教示頂けると助かります。 18 e.stopPropagation(); 19 e.stopImmediatePropagation(); 20}); 21

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

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

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

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

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

masaya_ohashi

2017/01/20 03:04

アコーディオン処理はどんなものを使われているのでしょうか?アコーディオン処理を有効化するのは例えばこういった方法ですか?→$(".accordion").accordion();
masaya_ohashi

2017/01/20 03:05

あ、このコード自体がアコーディオン処理ということでしょうか
hiro421

2017/01/20 03:07

説明不足ですみません、そうです!
kei344

2017/01/20 03:10

どのクラスが付いているときにアコーディオンにして、どれが付いているときにしないのかを明確にされたほうが良いと思います。
hiro421

2017/01/20 03:31

失礼いたしました!追記いたしました!
masaya_ohashi

2017/01/20 05:55

これは「上のアコーディオン」の部分は全くいじることができず、あとから特定のクラスを持ったものだけ除外したいという要望ですか?
hiro421

2017/01/20 06:00

そうですね。。そういった事が可能なのでしょうか?知識不足で恐縮です。。
hiro421

2017/01/24 03:33

みなさま、ご回答ありがとうございます!実現できました!
guest

回答3

0

これを

JavaScript

1$(".trigger").on('click', function() {

こうじゃ

JavaScript

1$(".trigger:not(.categories)").on('click', function() {

###質問追記に対応
これを

JavaScript

1$(".trigger").on('click', function() {

こうして

JavaScript

1$(".trigger").on('click.accordion', function() {

こうじゃ

JavaScript

1$(".categories .trigger, .trigger.stop").off('click.accordion');

jQueryのonはイベント名の後ろに.XXXXとつけることで、特定の名前をつけて処理を登録できます。
そして、jQueryのoffを使うことで、処理の登録を解除できます。

投稿2017/01/20 03:07

編集2017/01/20 06:04
masaya_ohashi

総合スコア9206

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

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

0

ベストアンサー

JavaScript

1$( '.categories .trigger' ).on( 'click', function( e ) { 2 e.stopImmediatePropagation(); 3} ); // こちらを前に書く 4let test = function () { 5 console.log( '.trigger' ); 6}; 7$( '.trigger' ).on( 'click', test ); 8$( '.trigger.stop' ).off( 'click', test ); // こういう方法もある 9```**動くサンプル:**[https://jsfiddle.net/0vpe9agx/](https://jsfiddle.net/0vpe9agx/)

投稿2017/01/20 06:00

kei344

総合スコア69398

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

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

0

jQueryでイベント処理を中断するのに色々な方法があります、
こちらの記事がわかりやすいのでご参考までに。

イベント処理を中断するには?

投稿2017/01/20 03:05

Everatch

総合スコア241

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問