2010-11-18 5 views
0

jQuery-UI 탭 위젯에 몇 가지 기능이 추가되었습니다. 내가하려고하는 일 중 하나는 해당 탭에서 이미지의 alt 속성 값을 가져 와서 각 탭 패널에서 링크의 텍스트를 자동화하는 것입니다. 내가 겪고있는 문제는 첫 번째 탭에서만 작동하며 다른 탭에서는 null 값을 반환한다는 것입니다. jQuery - 하나의 속성에서 값을 가져와 표시 텍스트로 사용하기

Here's a link to the test page.

을 (. 탭을 실행하기위한 코드는이 문제와 관련이없는 있기 때문에 포함되지 않습니다) 그리고 여기 나에게 문제를주고 JQuery와의 절입니다 :

$('.imageTabs').find('.link').each(function() { 
    $(this).find('a').each(function() { 
     $(this).html($(this).parent('.link').parent('.ui-tabs-panel').prev('.ui-tabs-nav').children('li.' + $(this).parent('.link').parent('.ui-tabs-panel').attr('id')).children('a').children('img').attr('alt')); 
    }); 
}); 

답변

3

당신은 시도를 한 줄의 IMO에서 너무 많은 작업을 수행하고 가능한 경우 $.find() 대신 jQuery의 내장 선택기를 사용해야합니다.

편리하게도 각 탭의 href#tab-1으로 설정되며 콘텐츠 영역의 jQuery 선택기로도 사용됩니다. 그래서 ... 작동합니까?

$('.ui-tabs-nav a').each(function() { 
    var name = $(this).find('img').attr('alt'); 
    var ref = $(this).attr('href'); 
    $(ref).find('.link').text(name); 
}); 
+1

'$ (this) .attr ('href')'대신에'this.href' - 동일한 결과, 더 나은 성능. 또한,'$ .find'는'$ .fn.find'와 같지 않습니다. 당신이 말하려고하는 것 같아요. –

+0

비록 내가 원하는 것을하기 위해 그것을 ('.link a')로 변경해야만했지만, 효과가있었습니다. 감사! – Tom

관련 문제