2011-11-22 55 views
4

我有我似乎無法被搞清楚一個問題:動態加載鏈接不會觸發點擊顏色框,但在第二次點擊

我動態使用jQuery到TinyScrollbar加載內容。內容包含應該激活ColorBox的鏈接。 對於工作鏈接,我使用jQUery的delegate。但是,在加載內容後,我的ColorBox 僅在我點擊兩次鏈接時纔會打開。

(我想,一來讓jQuery的認識,有一個匹配的元素,來執行委託函數第二次。)

這裏是我的代碼:

$(document).ready(function() { 
    var main = $('#main'); 
    main.tinyscrollbar(); 

    $(function(){ 
     $(window).bind('hashchange', function(e){ 
      var hash = location.hash; 

      if (hash != '' && hash != ' ' && hash != 'undefined') { 
       var urlToLoad = hash; 
       $('.overview').load(urlToLoad, function(response, status, xhr) { 
        urlToLoad = ""; 
        main.tinyscrollbar_update(); 
       }); 
      } 
     }); 
     $(window).trigger('hashchange'); 
    }); 

    $(document).delegate("a.video", "click", function(e){$(this).colorbox({iframe:true, innerWidth:700, innerHeight:394, fastIframe:false, transition:"none"});return false; }); 
    $(document).delegate("a.img", "click", function(e){$(this).colorbox({transition:"none"});return false;}); 
}); 

回答

11

這很有道理,因爲您只在第一次點擊時綁定colorbox單擊事件和設置數據。直到您再次單擊您觸發單擊事件並打開colorbox。由於您已經在使用自己的點擊事件,因此我的建議不是將colorbox綁定到任何事物上,只需在需要時直接調用即可。例如:

$(document).delegate("a.img", "click", function(e){ 
    $.colorbox({transition:"none", href:this.href}); 
    return false; 
}); 
+0

從這個人自己,謝謝傑克! –

+1

不幸的是,這似乎打破了圖像分組。使用這種方法我無法左/右翻頁。 – acme

1

您需要刪除docReady功能從docReady函數中。在jQuery中,這樣的:

$(function() { 
    //your docReady code 
}); 

就是這樣的簡寫形式:

$(document).ready(function() { 
    //your docReady code 
}); 

當您嵌入docReady代碼,嵌入docReady代碼進行排隊並在當前docReady代碼完成後執行。注意:

$(document).ready(function() { 
     $(function() { 
      alert("FIRST in code, but executed SECOND"); 
     }); 

     alert("SECOND in code, but executed FIRST"); 
}); 

說實話,我不是是否會解決您的問題肯定的,但它可能會導致在任何情況下奇怪的問題。

+1

感謝您告訴,不知道! :) – rafleo

0

這應該保持圖像分組在一個「畫廊」。不確定重新綁定每次點擊的含義。

$(document).delegate("a.img", "click", function(e){ 
    $("a.img").colorbox({rel: 'group1', open: true}); 
    return false; 
}); 
相關問題