문제
요 CSS 선택을 찾을 수 있는 2div2 개의 동일한 클래스입니다.나는 보았 nth-child()
하지만 그것이 내가 원하는 것 이후 나는 볼 수 없는 방법이 더 무엇을 명확히 클래스 I 니다.이러한 2div 될 것입니다 형제 자매는 문서에는 경우에는 도움이 됩니다.
내 HTML 다음과 같이 나타납니다.
<div class="foo">...</div>
<div class="bar">...</div>
<div class="baz">...</div>
<div class="bar">...</div>
고 싶 2div.바(또는 마지막 div.바 것이 작동하도).
해결책
업데이트:이 답변은 원래 2008 년에 작성되었습니다 nth-of-type
지원은 기껏해야 신뢰할 수 없었습니다. 오늘은 당신이 같은 것을 안전하게 사용할 수 있다고 말합니다 .bar:nth-of-type(2)
, IE8 이상을 지원하지 않는 한.
2008 년의 원래 답변은 다음과 같습니다 (더 이상 이것을 추천하지 않을 것입니다!):
사용할 수있는 경우 프로토 타입 JS 이 코드를 사용하여 스타일 값을 설정하거나 다른 클래스 이름을 추가 할 수 있습니다.
// set style:
$$('div.theclassname')[1].setStyle({ backgroundColor: '#900', fontSize: '1.2em' });
// OR add class name:
$$('div.theclassname')[1].addClassName('secondclass'); // pun intentded...
(이 코드를 테스트하지 않았으며 실제로 두 번째 DIV가 있는지 확인하지는 않지만 이와 같은 것이 작동합니다.)
그러나 HTML 서버 사이드를 생성하는 경우 두 번째 항목에 추가 클래스를 추가 할 수도 있습니다 ...
다른 팁
선택기를 결합 할 수 있습니다.
.bar:nth-child(2)
"수업이있는 것 술집"그것은 또한 두 번째 아이입니다.
나의 원본에 대한 답 :nth-of-type
은 완전히 잘못된 것입니다.감사에 대한 바울을 가리키는 이니다.
단어"유형"거기에는"요소형"(아 div
).그것은 선택 div.bar:nth-of-type(2)
고 div:nth-of-type(2).bar
같은 일을 의미한다.모두 요소를 선택하는[a]는 두 번째 div
그들의 부모로,그리고[b]있는 클래스 bar
.
그래서 순수한 CSS 솔루션 왼쪽에 나가 알고 있는 경우,당신을 선택하려면 모든 요소의 선택을 제외하고 첫 번째,일반적인 형제를 선택:
.bar ~ .bar
http://www.w3schools.com/cssref/sel_gen_sibling.asp
내 원(틀)응답을 다음과 같:
의 도착과 함께 CSS3,다른 옵션이 있습니다.도 사용할 수 없었을 때는 질문에 첫 번째 질문:
.bar:nth-of-type(2)
http://www.w3schools.com/cssref/sel_nth-of-type.asp
이 선택하는 두 번째 요소는 충족 .bar
선택합니다.
하려는 경우 두 번째와 마지막 의 특정 요소의 종류(또는 그들 모두는 제외한 첫 번째),일반 형제 선택은 또한 잘 작동:
.bar ~ .bar
http://www.w3schools.com/cssref/sel_gen_sibling.asp
그것은 짧습니다.하지만 물론,우리가 좋아하지 않을 중복되는 코드,오른쪽?:-)
HTML의 구조는 정확히 무엇입니까?
HTML이 다음과 같이 이전 CSS가 작동합니다.
CSS
.foo:nth-child(2)
HTML
<div>
<div class="foo"></div>
<div class="foo">Find me</div>
...
</div>
그러나 다음 HTML이 있으면 작동하지 않습니다.
<div>
<div class="other"></div>
<div class="foo"></div>
<div class="foo">Find me</div>
...
</div>
간단한 풋, 이전 선택기의 나머지 부분에서 일치하는 인덱스를 얻을 수있는 선택기가 없습니다.
HTML
<h1> Target Bar Elements </h1>
<div class="foo">Foo Element</div>
<div class="bar">Bar Element</div>
<div class="baz">Baz Element</div>
<div class="bar">Bar Second Element</div>
<div class="jar">Jar Element</div>
<div class="kar">Kar Element</div>
<div class="bar">Bar Third Element</div>
CSS
.bar {background:red;}
.bar~.bar {background:green;}
.bar~.bar~.bar {background:yellow;}
그리고 jQuery 호환 답변을 찾고있는 사람들을 위해 :
$('.foo:eq(1)').css('color', 'red');
HTML :
<div>
<div class="other"></div>
<div class="foo"></div>
<div class="foo">Find me</div>
...
JavaScript를 통해이 작업을 수행 할 수없는 이유가 있습니까? 저의 조언은 보편적 인 규칙을 가진 셀렉터를 대상으로하는 것입니다..foo
) 그리고 뒤로 뒤로 물러서서 JavaScript로 마지막 foo를 얻고 필요한 추가 스타일을 설정하십시오.
또는 Stein이 제안한대로 가능하면 두 가지 수업을 추가하십시오.
<div class="foo"></div>
<div class="foo last"></div>
.foo {}
.foo.last {}
.parent_class div:first-child + div
방금 위의 것을 사용하여 두 번째를 찾았습니다 div
1 일 자식을 연쇄시켜 +
선택자.