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

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

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

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

Q&A

解決済

2回答

2272閲覧

[jQuery]兄弟要素を指定する方法を知りたい

k499778

総合スコア599

jQuery

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

0グッド

0クリップ

投稿2015/07/26 06:11

編集2015/07/26 06:12

jQueryを勉強しています。

質問があるのですが
結論から言うと
兄弟要素を指定する方法はあるのでしょうか?

親子要素ならfindメソッドを使って子要素をクラス名やタグ名、属性名で指定することができます。
ただ兄弟要素だと指定する方法がわかりません。

prev()やnext()で1個違いを指定するのは知っていますが、2個前などを指定するにはどうしたらいいでしょうか。

prevAll()やnextAll()では以前以後のすべての要素が返ってきてしまいますし、siblings()は兄弟要素すべてを返してしまいます。

よくクリックイベントを使っていて2個上の兄弟要素を指定したいとき、1つのメソッドでうまく指定できる方法があればなと思っています。

$(this).prev().prev();

のようにしたり

テーブルなら
・$(this).parents("tr").find("td").eq(1);
・$(this).parents("tr").find("tdのクラス名")

のように長ったらしくなってしまいます。
find()のように一つのメソッドを書いてその引数に要素のクラス名などを指定する書き方はないでしょうか?

もし分かる方がいれば宜しくお願いします。
もしないならないとお伝え願えればと思います。

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

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

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

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

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

guest

回答2

0

ベストアンサー

このあたりを使ってフィルタするとかですかね。
http://www.jquerystudy.info/reference/traversing/siblings.html

ただそもそもの話として、解決したいことはなんでしょうか?
というのも、ふたつ上の要素、という指定はちょっとしたHTMLの変更で破綻してしまいますし、実装の設計としてはちょっと問題があるのではないかな、と思ったためです。

例えば操作したい要素をさらにひとつのdivでくるんで、その中の決められた構造において各要素にアクセスする、というふうに設計したほうが後々も問題が出づらいのではないかなと思います。

投稿2015/07/26 06:23

edo_m18

総合スコア2283

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

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

k499778

2015/07/26 13:24

edo_m18さん 回答ありがとうございます! siblings()の引数にクラス名を指定する方法で実現したかったことができました。 まさに私がやりたかったことです。ありがとうございました。
guest

0

... 2個上の兄弟要素 ...

data 属性として "item-0001" ”item-0002" のように対象としたい要素に シーケンシャルな番号を含んだ値を指定しておきます。
クリックでのいイベントハンドラー中で、 this の data 属性値を取得して、 "item-xxxx" ちょっとパースすれば、$(this) のシーケンス番号がえられます。
このシーケンス番号を -2 した値が 1 以上なら、.... なんて様にするのは如何でしょう?
(data 属性でなく、 class 属性を使ってもよいかもしれません)

参考情報:

投稿2015/07/26 09:12

katoy

総合スコア22324

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

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

k499778

2015/07/26 13:26

katoyさん 回答ありがとうございます。 そのような方法があるんですね!そのやり方についてもまた勉強してみます。 感謝しています。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問