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

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

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

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

jQuery

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

Q&A

解決済

1回答

1405閲覧

【Jquery】親兄弟関係なく、直前に書かれた要素を取得したい

sanset

総合スコア186

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/04/26 00:40

jqueryで、ある要素の直前に書かれているinput:textの要素を取得したいです。
今回は背景色を変えるという例で書きます。

html

1<!-- 例1 --> 2<input type="text" name="search"> 3<div class="sample"></div>

javascript

1$('.sample').prev('input:text').css('background-color', 'red');

これだと無事変更できるのですが、

html

1<!-- 例2 --> 2<div> 3 <input type="text" name="search"> 4</div> 5<div class="sample"></div>

html

1<!-- 例3 --> 2<input type="text" name="search"> 3<div> 4 <div class="sample"></div> 5</div>

と、書かれると変更できません。その他メソッドも試してみましたが変更出来ず…。

行いたいのは、
階層等に関わらず、.sampleの直前に書かれたinput:textの要素にアクセスできるようにしたいです。

なので、例1でも例2でも例3でも、どのパターンでも取得できる適切なメソッドはありますでしょうか?

バージョンはJquery2.1.1です。
どなたかご教示お願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

HTMLの見た目は順番に並んでいるように見えますが、内部的にはDOMツリーと呼ばれるように、要素の中に要素が入る、ディレクトリ・サブディレクトリ・ファイルのような構造となっています。

ということで、DOM(とそれをラップするjQuery)でできる基本操作は、「同じレベルの兄弟要素」「親要素」「子要素」といった、ツリー構造に沿ったものに限られます。

「階層構造を無視してすぐ前にあるもの」なんていう操作をしようと思えば、自力でコードを書くしかありませんが、それよりHTMLレベルで(クラス・ID・独自属性などをセットして)探索しやすくしておくほうが楽かと思います。

投稿2016/04/26 01:14

maisumakun

総合スコア145183

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

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

sanset

2016/04/26 02:14

ありがとうございます。仰る通りだと思います。 新規でJqueryライブラリを作成しようとしましたが、ユーザーに指定させるのは煩わしいと思いこのようなことを考えてしまいました。 しっかりオプションで別途設定してもらえるように作りたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問