teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

Q&A

解決済

3回答

6806閲覧

jQueryのセレクタで複数条件を指定したい

mika33532

総合スコア27

jQuery

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

0グッド

1クリップ

投稿2017/08/24 08:06

0

1

いつもお世話になっております。
下記のようなHTMLデータの<td>の文字列をキーに<tr>に設定されたrowidを取得したいです。
key1だけの条件であれば下記のように取得できたのですが、
key1とkey2を条件にしたい場合にうまくできませんでした。
この場合はどのように書けばいいのでしょうか?
よろしくお願いいたします。

html

1<html> 2: 3<body> 4 5<table id="table2"> 6 <tbody> 7 <tr data-rowid="101"><td>(1)</td><td class="key1">test1</td><td class="key2">aaa</td></tr> 8 <tr data-rowid="102"><td>(2)</td><td class="key1">test2</td><td class="key2">bbb</td></tr> 9 <tr data-rowid="103"><td>(3)</td><td class="key1">test3</td><td class="key2">ccc</td></tr> 10 </tbody> 11</table> 12: 13<script type="text/javascript"> 14$(function() { 15 // key1を条件にrowidを取得 16 var rowid = $("#table2 td.key1:contains('test3')").parent().data("rowid"); 17}); 18</script> 19: 20</body> 21</html> 22

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

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

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

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

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

yambejp

2017/08/24 08:19 編集

andですか?orですか?また複数行ヒットしたときrowidは値なので先頭データのrowidを掴みますがそれでよろしいのでしょうか?
guest

回答3

0

ベストアンサー

とりあえず、質問事項にも補足入れてありますが
以下サンプルで確認して下さい

javascript

1$(function() { 2 /* key1がtest3 */ 3 var rowid = $("#table2 tr").has("td.key1:contains('test3')").data("rowid"); 4 console.log(rowid); 5 /* key1がtest3 かつ key2がaaa → 存在しない */ 6 var rowid = $("#table2 tr").has("td.key1:contains('test3')").has("td.key2:contains('aaa')").data("rowid"); 7 console.log(rowid); 8 /* key1がtest3 かつ key2がccc */ 9 var rowid = $("#table2 tr").has("td.key1:contains('test3')").has("td.key2:contains('ccc')").data("rowid"); 10 console.log(rowid); 11 /* key1がtest3 または key2がaaa */ 12 var rowid = $("#table2 tr").has("td.key1:contains('test2'),td.key2:contains('aaa')").data("rowid"); 13 console.log(rowid); 14}); 15

投稿2017/08/24 08:25

編集2017/08/24 08:25
yambejp

総合スコア117875

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

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

Tak1016

2017/08/24 08:27

has って子要素だから 2個目のhasは効かないのではないでしょうか??
Tak1016

2017/08/24 08:28

ごめんなさい 子要素にもつ要素だから chainとしては自分自身に戻るのね。失礼失礼。
mika33532

2017/08/24 08:52

has()を使ってできました。 ありがとうございました!
guest

0

※若干遠い回答となってしまいましたすみません。
サンプルコードも含めて既に他の方が提示されているためそちらを参照してください

下記参考になりますでしょうか。

投稿2017/08/24 08:19

編集2017/08/24 08:28
m.ts10806

総合スコア80888

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

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

mika33532

2017/08/24 08:53

ご回答ありがとうございました。 サンプルコードを参考にできました。
guest

0

js

1 var rowid = $("#table2 td.key1:contains('test3')") 2.next(".key2:contains('ccc')") 3.parent().data("rowid");

投稿2017/08/24 08:19

Tak1016

総合スコア1408

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

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

mika33532

2017/08/24 08:55

ご回答ありがとうございました。 サンプルコードを参考にできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問