jQueryのデータ属性値による要素の検索


103

私は以下のようないくつかの要素を持っています:

<a class="slide-link" href="#" data-slide="0">1</a>
<a class="slide-link" href="#" data-slide="1">2</a>
<a class="slide-link" href="#" data-slide="2">3</a>

(ゼロ)のdata-slide属性値を持つ要素にクラスを追加するにはどうすればよい0ですか?

私は多くの異なる解決策を試しましたが、何もうまくいきませんでした。例:

$('.slide-link').find('[data-slide="0"]').addClass('active');

何か案が?


2
ここで少し説明すると、これが機能しないのは.slide-link、の属性を持つの子孫を見つけようとしているためです[data-slide="0"]。何かはそれ自体の子孫になることはできないので、返すものは何もありません。あなたはこれらのリンクのラッパーを持っていた場合は、これは働いているだろう:$('.slide-link-wrapper').find('[data-slide="0"]').addClass('active');
DondeEstaMiCulo

回答:


223

属性の等しいセレクタを使用

$('.slide-link[data-slide="0"]').addClass('active');

Fiddle Demo

.find()

それは木の下で働きます

セレクター、jQueryオブジェクト、または要素によってフィルター処理された、一致する要素の現在のセット内の各要素の子孫を取得します。


2
私の悪い。私はそれを試しましたが、間違った場所で(要素を動的に追加する前に...)とにかく努力をありがとう!正常に動作します。
MrUpsidown 2014

@MrUpsidown Welcome Happy to help :)
Tushar Gupta-curioustushar

1
うわー!このソリューションは素晴らしいです!何時間も問題がありましたが、これで解決しました!

var slidernumber = "0";定数ではなく変数値と同等にするにはどうすればよい"0"ですか?
トニーギル2017

何らかの理由でそこにある特定のクラスに依存できない場合は、次のように最初の部分にワイルドカードを使用できます$( '* [data-slide = "0"]')。addClass( 'active') ;
SeanMC 2017


5

文字列の代わりに変数を使用して同じソリューションを検索しました。
私は私の解決策で誰かを助けることができることを願っています:)

var numb = "3";
$(`#myid[data-tab-id=${numb}]`);

3

andSelf()メソッドを使用してDOMを含むラッパーを取得find()し、アイデアとして回避することもできます

$(function() {
  $('.slide-link').andSelf().find('[data-slide="0"]').addClass('active');
})
.active {
  background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="slide-link" href="#" data-slide="0">1</a>
<a class="slide-link" href="#" data-slide="1">2</a>
<a class="slide-link" href="#" data-slide="2">3</a>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.