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

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

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

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

jQuery

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

Q&A

解決済

3回答

2396閲覧

return後の文をひとつの処理としてまとめたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/10/17 09:36

###前提・実現したいこと
タイトルの通りなのですが、jQueryreturn後の文をひとつの処理としてまとめたいです。

###該当のソースコード
以下return以後の処理はいずれも同じものです。

javascript

1if ($('input').is(':checked')) { 2 $('#test01').show().filter(function () { 3 return $(this).data('w') > $d && $W == true || 4 $(this).data('h') > $dH && $W == true || 5 $(this).data('d') > $dD && $W == true || 6 $(this).data('d') > $d && $D == true || 7 $(this).data('w') > $dW && $D == true || 8 $(this).data('h') > $dH && $D == true || 9 $(this).data('h') > $d && $H == true || 10 $(this).data('w') > $dW && $H == true || 11 $(this).data('d') > $dD && $H == true; 12 }).hide(); 13}else { 14 $('#test02').show().removeClass('hoge').filter(function () { 15 return $(this).data('w') > $d && $W == true || 16 $(this).data('h') > $dH && $W == true || 17 $(this).data('d') > $dD && $W == true || 18 $(this).data('d') > $d && $D == true || 19 $(this).data('w') > $dW && $D == true || 20 $(this).data('h') > $dH && $D == true || 21 $(this).data('h') > $d && $H == true || 22 $(this).data('w') > $dW && $H == true || 23 $(this).data('d') > $dD && $H == true; 24 }).hide().addClass('hoge'); 25}

上記のように冗長なソースコードにならないよう、別で関数を用意する等の方法で処理を使いまわすことができればと考えております。

初歩的な質問かと思いますが、このような処理のまとめ方に関していまひとつ理解しきれておりません。どうぞ宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

まさに、「別で関数を用意する」ことで実現できます。

javascript

1function judge () { 2 return $(this).data('w') > $d && $W == true || 3 $(this).data('h') > $dH && $W == true || 4 $(this).data('d') > $dD && $W == true || 5 $(this).data('d') > $d && $D == true || 6 $(this).data('w') > $dW && $D == true || 7 $(this).data('h') > $dH && $D == true || 8 $(this).data('h') > $d && $H == true || 9 $(this).data('w') > $dW && $H == true || 10 $(this).data('d') > $dD && $H == true; 11} 12if ($('input').is(':checked')) { 13 $('#test01').show().filter(judge).hide(); 14}else { 15 $('#test02').show().removeClass('hoge').filter(judge).hide().addClass('hoge'); 16}

投稿2017/10/17 09:57

maisumakun

総合スコア145184

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

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

退会済みユーザー

退会済みユーザー

2017/10/17 10:35

ご回答ありがとうございます。 ご指摘の方法で実現することができました。このように関数を作成してfilter(judge)とすれば良いのですね。関数を作成するところまでは思いついたのですが、judge()を入れる箇所が分からず悶々としておりました。 ありがとうございます。
guest

0

idで指定したタグをshowしてfilterしてhideしていますが
これはtoggleでやるほうが処理は簡単になります。
ただしいずれにしても複数のdata-*属性を持たして処理してるようなので
データ管理を調整する方が現実的ですね

投稿2017/10/17 10:24

yambejp

総合スコア114843

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

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

退会済みユーザー

退会済みユーザー

2017/10/17 10:32

ご指摘ありがとうございます。処理の効率化について、確かに煩雑な印象もありますが、まだ知識が追いつかず、ご指摘を参考により効率的なコードが書けるよう勉強してまいります。
guest

0

「$d」や「$W」といった変数のスコープが分からないので、外から与えることにして、

function doSomething(obj, $d, $dD, $dH, $dW, $H, $W) { // ここにreturn分に書かれていた判定処理を記述 // ただし、$(this)はobjに変更して。 }

みたいにfunction書いて、

if ($('input').is(':checked')) { $('#test01').show().filter(function () { return doSomething($(this), $d, $dD, $dH, $dW, $H, $W); }).hide(); }else {

みたいにすれば短くなりますな。

投稿2017/10/17 09:59

tkturbo

総合スコア5572

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

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

退会済みユーザー

退会済みユーザー

2017/10/17 10:33

いつもご回答ありがとうございます。このような方法があるとは思いつきませんでした。 是非とも今後の参考にさせていただきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問