順序付けられていないリストと、そのリストにli
タグのインデックスがあります。そのインデックスを使用してli
要素を取得し、背景色を変更する必要があります。リスト全体をループせずにこれは可能ですか?つまり、この機能を実現できる方法はありますか?
ここに私のコードがあり、私はそれがうまくいくと信じています...
<script type="text/javascript">
var index = 3;
</script>
<ul>
<li>India</li>
<li>Indonesia</li>
<li>China</li>
<li>United States</li>
<li>United Kingdom</li>
</ul>
<script type="text/javascript">
// I want to change bgColor of selected li element
$('ul li')[index].css({'background-color':'#343434'});
// Or, I have seen a function in jQuery doc, which gives nothing to me
$('ul li').get(index).css({'background-color':'#343434'});
</script>
$(...)[index] // gives you the DOM element at index
$(...).get(index) // gives you the DOM element at index
$(...).eq(index) // gives you the jQuery object of element at index
DOMオブジェクトにはcss
関数がありません。最後の...
$('ul li').eq(index).css({'background-color':'#343434'});
docs:
.get(index)
戻り値:要素
.eq(index)
戻り値:jQuery
JQueryの .eq()
メソッドを使用して、特定のインデックスを持つ要素を取得できます。
$('ul li').eq(index).css({'background-color':'#343434'});
eqメソッドまたはセレクター を使用できます。
$('ul').find('li').eq(index).css({'background-color':'#343434'});
CSS :nth-of-type
pseudo-classを使用してjQueryのインデックスで要素を取得する別の方法があります。
<script>
// css selector that describes what you need:
// ul li:nth-of-type(3)
var selector = 'ul li:nth-of-type(' + index + ')';
$(selector).css({'background-color':'#343434'});
</script>
他にも selectors があり、jQueryで使用して必要な要素と一致させることができます。