2012-12-03 34 views
2

的每一個()在非標準情況下,我們可以通過執行下一個創建一個照片庫(照片組):的fancybox:使照片​​組與jQuery

$('.fancybox').fancybox(); 

在HTML中,我們一定要設置屬性相對標記「a」到相同值的

<a rel="group" title="" href="/profile/photos/files/74.jpeg" class="fancybox no-tooltip" id="photo-link-74"><img class="image-curving" style="display: block;" alt="" src="/profile/photos/files/74_thumb.jpeg"></a> 
<a rel="group" title="" href="/profile/photos/files/74.jpeg" class="fancybox no-tooltip" id="photo-link-74"><img class="image-curving" style="display: block;" alt="" src="/profile/photos/files/74_thumb.jpeg"></a> 

什麼,當我們要使用jQuery的每一個()的情況呢?

 $(".fancybox").each( 
      function() 
      { 
       var parentId = $(this).parent().parent().attr('id'); 
       var id = parentId.substring(parentId.indexOf('-') + 1, parentId.length); 

       $(this).fancybox(
        { 
         minWidth: 600, 
         afterShow: function() { afterShow(id); }, 
         title: "<img href='/pics/indikator.gif'>", 
         helpers: 
         { 
          title: 
          { 
           type : 'inside' 
          } 
         } 
        } 
       ); 
      } 
     ); 

在最後一種情況下,照片將不會被分組。我如何處理功能each(),並將所有照片分組爲rel屬性相同?

+0

爲什麼你甚至使用'each'?只需遍歷所有元素,給它們一個'rel'屬性來對它們進行分組,然後調用fancybox *一次*。 –

+0

@Asad我想使用閉包變量** parentId **和** id **。我不知道你的方法是否可行。你認爲這有可能嗎? – sergzach

+0

@Asad感謝你的想法迭代。 – sergzach

回答

1

你不需要each(),剛拿到父母定期的fancybox自定義腳本內蒼蠅的id,使用的fancybox回調像

$(".fancybox").fancybox({ 
    afterShow: function(){ 
     var parentId = $(this.element).parent().parent().attr('id'); 
     // do something with that variable 
    } 
}); 

... 通知我用$(this.element)因爲這是在fancybox回調中引用$(this)的方法。你也可以在腳本的頂部聲明所有變量,以便隨時訪問它們。

1

下是不是普遍的,但是當我們在網頁上有一個畫廊的作品:

 var ids = []; 
     var index = 0; 

     $('.fancybox').each(
      function() 
      { 
       var parentId = $(this).parent().parent().attr('id'); 
       var id = parentId.substring(parentId.indexOf('-') + 1, parentId.length); 
       ids[ index ] = id; 
       index++; 
      } 
     ); 

     $(".fancybox").fancybox(
      { 
       minWidth: 600, 
       afterShow: function() { afterShow(ids[ $.fancybox.current.index ]); }, 
       title: "<img href='/pics/indikator.gif'>", 
       helpers: 
       { 
        title: 
        { 
         type : 'inside' 
        } 
       } 
      }    
     ); 

感謝阿薩德誰給我的想法進行迭代。

如果有人有更明確的決定(沒有外部變量,但只使用閉包變量),請在此處發佈。

+0

很高興你解決了你的問題。 :) –