2010-12-14 2 views
3

배경 : 센터에 큰 이미지를 표시하고 점차적으로 더 작은 이미지를 어느 쪽에서나 표시하는 기존의 포토 갤러리 플러그인에서 업그레이드를 수행하고 있습니다..data()에 의해 첨부 된 값을 선택하는 방법이 있습니까?

그래서 제 질문은 이것이다 :

$(this).data('index', i).data('prev', i - 1).data('next', i + 1); 

: 내가 지금처럼 이미지의 인덱스, 다음 이미지의 인덱스, 이전 이미지의 인덱스를 제공 각각의 이미지에 일부 데이터를하고 있어요 나중에 색인을 기반으로 이미지를 선택할 수 있기를 바랍니다. 나는 다음을 시도했지만, 작동하지 않는 것 : .data()에 첨부 된 데이터의 조각을 기반으로 요소를 선택하는 방법은

$('[data-index=' + index + ']'); 

있습니까?

답변

4

당신은 다음과 같이 .filter()을 사용할 수 있습니다 : 그것은 모든 요소에이 필터를 실행으로

$('*').filter(function() { return $.data(this, 'index') == index; }) 

그러나, *매우 비싼입니다로 시작하는보다 구체적인 선택기를 사용하십시오.

+0

Sweet! 그래서'$ ('img'). filter (function() {return $ .data (this, 'index') == index;})'와 같은 것이'*'를 사용하는 것보다 효과적이어야합니다. – Ender

+0

페이지에 많은 요소가있는 경우 그렇습니다. 말도 안되게 비효율적입니다. jQuery는 페이지의 모든 요소를 ​​살펴보고 이러한 방식으로 각각의 요소를 테스트해야합니다. 그가 말했던 것처럼 당신이 선택기를 아래로 좁히면 그 ok. – simshaun

+0

@Ender - yup, 정확하게. * 많은 * 요소가 있다면 사실은 완전히 뒤로 향하는 방법이 있지만 먼저 이해해야합니다. 이해하기가 훨씬 쉽고 간단합니다. –

1

약간 다른 방법 : 이미지가 HTML의 시리즈에있는 가정

은 왜 그냥 같은 것을 할?

$('#images img').eq(index)

관련 문제