2012-03-26 72 views
0

我已經在網站上安裝了Wordpress的Fancybox插件。 在正常頁面中,我插入Wordpress短代碼庫或圖像,它工作得很好。Fancybox不能在Wordpress上使用AJAX顯示的帖子

但我有一些頁面通過ajax函數加載帖子。我知道,通常情況下,Fancybox插件掃描每個圖像的頁面,然後在每個圖像上創建一個屬性「rel ='fancybox'。因此,如果頁面已經加載並且我添加了一些內容與AJAX,我不指望插件工作,因爲它是由de jQuery(document).ready語句觸發的。

我該如何解決這個問題?我想在PHP函數中放置一個str_replace函數,由AJAX調用觸發,像這樣:

$content = get_the_content(); 

//這會得到POST_CONTENT並將其存儲在$內容變量

$content = apply_filters('the_content', $content); 

//這將使WordPress的執行對字符串$內容

$content = str_replace('<a ', '<a rel="fancybox" ', $content); 

//這應該做出的fancybox出現在簡碼。

我怎樣才能解決這個問題呢? 非常感謝。

+0

這可能是您的JS的問題(在AJAX更新頁面後,必須再次觸發fancybox初始化),所以您將不得不向我們提供您正在使用的JS。構建fancybox功能和b。更新DOM。 – m90 2012-03-27 07:31:27

回答

0

許多事情要考慮在這裏。

$content = str_replace('<a ', '<a rel="fancybox" ', $content); 

將不火的fancybox但<a rel="fancybox標籤綁定的fancybox IF(且僅當)存在

$("a[rel='fancybox']").fancybox(); 

這樣的自定義腳本但是,您要添加此元素(或使用替換方法添加rel屬性),這意味着它在加載fancybox插件時不存在於DOM中。

如果你使用的是fancybox v1.3.4或更低版本,這個(這些)版本不支持動態添加的元素,所以以上都不會工作。

作爲解決方法,您可以嘗試識別父容器並將.on()方法應用爲described here

您可能需要調整劇本,以適應您的需求像

$("#container").on("focusin", function(){ 
$("a[rel='fancybox']").fancybox({ ...... 

末注:的fancybox V2.X已經支持現有的和動態添加元素。