2011-09-07 2 views
0

하위 페이지에서 내용을로드하고 prettyPhoto 플러그에 필요한 갤러리의 rel 속성을 추가하려고합니다. 스크립트가 실행 된 후 rel이 추가되었습니다. 이미지의 마지막 세트. \.load()는 모든 객체에 적용되지 않습니다.

HTML

<div class="prettyphotothumb"> 
    <ul class="navsub"> 
    <li><a href="album.html"><img src="images/thumbnail.jpg" alt="" />Album</a></li> 
    <li><a href="blarg.html"><img src="images/thumbnail.jpg" alt="" />Blarg</a></li> 
    <li><a href="test.html"><img src="images/thumbnail.jpg" alt="" />Test</a></li> 
    </ul> 
</div> 

JS

if($('div.prettyphotothumb').length > 0) { 
    $('div.prettyphotothumb a').each(function() { 
     var pageLink = $(this); 
     var albumTitle = $(pageLink).text(); 
     var album = $('<div class="album"></div>').appendTo($(pageLink).parent()); 

     $('.album').load(this.href+' .prettyphotoalbum p > *',null,function(){ 
      album.children('a').attr('rel','prettyPhoto['+albumTitle+']'); 
     }); 

     $('a[rel^="prettyPhoto"]').live("click",function() { 
      $.prettyPhoto.open($(this).attr("href"),"",""); 
      return false; 
     });   

    }); 
} 

답변

2

당신이 each를 사용하여 반복 할 때, 당신은 <div class="album"> O를 추가하고 n은 각각의 반복 : 오른쪽 아래에서 다음

var album = $('<div class="album"></div>').appendTo($(pageLink).parent()); 

: 그리고 첫번째 반복에서

$('.album').load(//... 

, $('.album').length 번째에이 최종 반복이 끝날 것 등 두 될 것이다 한 것 추가 한 세 요소 <div class="album"> 모두에 .load('test.html .prettyphotoalbum p > *', ...을 호출하십시오. 그래서이 이동

// Use album rather than $('.album') 
album.load(this.href+' .prettyphotoalbum p > *',null,function(){ 
    album.children('a').attr('rel','prettyPhoto['+albumTitle+']'); 
}); 

또한, 하나의 .live 호출이 필요합니다 :

난 당신이 당신이 방금 만든 일에 load을 바인딩 할 생각 .each 외부

$('a[rel^="prettyPhoto"]').live("click",function() { 
    $.prettyPhoto.open($(this).attr("href"),"",""); 
    return false; 
}); 

. 이렇게하면 더 잘 작동합니다.

if($('div.prettyphotothumb').length > 0) { 
    $('div.prettyphotothumb a').each(function() { 
     var pageLink = $(this); 
     var albumTitle = $(pageLink).text(); 
     var album  = $('<div class="album"></div>').appendTo($(pageLink).parent()); 

     album.load(this.href+' .prettyphotoalbum p > *', null, function() { 
      album.children('a').attr('rel', 'prettyPhoto[' + albumTitle + ']'); 
     }); 
    }); 

    $('a[rel^="prettyPhoto"]').live("click", function() { 
     $.prettyPhoto.open($(this).attr("href"), "", ""); 
     return false;  
    }); 
}