2011-01-07 66 views
0

我使用jQuery的一些很好的插件來使用基於AJAX的站點。現在我遇到了一個問題,我想用livequery來指定我的slimbox。問題是,它沒有得到我的組在linkFiler函數中所述。livequery不能與組一起工作

$(document).ready(function() 
{ 
    $('a[rel^="lightbox"]').livequery(function() 
    { 
     $(this).slimbox(null, function(el) // link mapper 
     { 
      return [el.href, el.title + '<br/><a href=\"' + el.href + '\">Download</a>']; 
     } 
     , function(el) // links filter 
     { 
      return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel)); 
     }); 
    }); 
}); 

怎麼回事?在my pages(傳記)中的一箇中,slimbox僅在我刷新該網站上的頁面時才起作用,但在點擊我的頁面時不起作用。這些組不在網站的唱片部分工作。是生物和唱片圖片

配件如下:提前

<a href="albumCover.jpg" rel="lightbox-disco"><img src="albumCover_thumb.jpg" alt=""></a> 

<a rel="lightbox" href="bandPic.png"><img style="float:right;margin-left:1em;" src="bandPic_thumb.png" alt=""></a> 

謝謝!

UPDATE

我發現在slimbox代碼我的問題,因爲它使用了this是它的鏈接。所以每次livequery被觸發,this被覆蓋,應該實際上包含完整的選擇器。也許我可以只是說解決這個問題:

$('a[rel^="lightbox"]').livequery(function() 
{ 
    $('a[rel^="lightbox"]').slimbox(null, function(el) // link mapper 
... 

但這樣做會使火的liveQuery朝slimbox了很多次,這是不想要的行爲。有沒有更好的方法讓它不經常開火?

UPDATE2

至於傳記頁面的其他questio。 livequery更新刪除圖像,但所有其他網站都添加圖像正確完成...多麼奇怪...

回答

1

我實際上找到了解決方案,但它是相當奇怪的。如果有人讀到這個,可以向我解釋這件事,那會很好。不知何故,livequery使我的代碼在空<head>標記和填充標記之間有所不同。所以,當我的子頁面(比如BIO或DISCO)中有<style>標籤時,即使它是空的,livequery也能正常工作。如果我有一個空的<head>標籤,那麼livequery只能在離開頁面時使用。這很奇怪。現在我只創建了一個空的<style>標籤,每個頁面都正常工作。

至於團體問題,我做了我的livequery有點不同,所以livequery不再被調用了。在我的HTML中,我確信每個子頁面中總是有一個<div class="content">。所以,我可以做的liveQuery如:

$('.content').livequery(function() 
{ 
    $('a[rel^="lightbox"]').slimbox(null, function(el) // link mapper 
... 

與slimbox的問題是,它正好可以完全選擇作爲其範圍。因此,改變slimbox到不同的選擇器,將禁用舊的。 其代碼如下:

var links = this; // where this is the $(selector)