2009-09-09 5 views
0

사람이이 코드 끔찍한 덩어리 멀리 할 수있는 선택을 제공 할 수있는이 끔찍한 코드를 제거합니다 :좋은 선택

// img is the image element... 
var descriptionContent = $(".descriptionContent", img.parent("td").parent("tr").next("tr")); 

HTML은 다음과 같습니다

<table> 
    <tr> 
     <td><img /></td> 
    </tr> 
    <tr> 
     <td><div class="descriptionContent" /></td> 
    </tr> 
    <!-- Repeat n times --> 
</table> 

을 감안할 때 사용자가있다 img를 클릭하면 다음 (그리고 단지 다음) .descriptionContent 요소를 가져와야합니다.

감사합니다, 당신이 뭔가에 이미지를 배치에 대한 걱정 때문에
K

+1

현재 선택이 그다지 무서운 보이지 않는다 . –

+0

정말요? 그러나 나중에 이미지를 래핑하도록 구조를 변경하면 코드를 다시 실행해야합니까? 부모를 선택하게하는 것이 낫지 않겠습니까? – Kieron

답변

5

이 시도 :

var descriptionContent = $(".descriptionContent", img.closest("tr").next("tr")); 

가장 가까운 명령은 지정된 셀렉터에 일치하는 가장 가까운 조상을 발견한다. See here.

+0

그 사실을 몰랐습니다. 감사! – janoliver

+0

그 중 하나도 몰랐는데, Walt에게 감사드립니다! - 대접 받아. – Kieron

+0

그래, 좀 편리 하네. 도와 줘서 고맙다. –

0

나는 이것이 일반적으로 구조화 된 방식에 대해 많은 것을들을 것이라고 생각합니다. 테이블을 없애면 많은 문제가 사라집니다.

뭔가 같은 : 다음

<div class="imgAndContent"> 
    <img src="blah.jpg"> 
    <span class="someDescription">Description.</span> <!-- or div, you choose based on your need --> 
</div> 

당신이 간단하게 할 수있는 ...

var descriptionContent = $(this).next(); 

사용자가 클릭

...

+0

표가 유효하며 표 형식의 데이터입니다. – Kieron

+0

글쎄, 나는 두 개의 데이터 열이 여전히 테이블이라고 가정한다. 꽤 흑백이 아니지만 나는 당신의 말을 듣는다. – cgp

관련 문제