2011-07-02 74 views
2

我捕捉到某些超鏈接上的點擊事件,而是使用href打開jQuery UI對話框。我返回false,以避免瀏覽器做的太...設置在jQuery鏈接訪問

$('a.previewable').click(function(){ 
      $('#dialog').html('<img src="'+$(this).attr('href')+'">'); 
      $('#dialog').dialog({ 
        title: 'Preview', 
        width: 350, 
        modal: true 
      }); 
      return false; 
    }); 

它的偉大工程,但是當我點擊它的鏈接的顏色不會更改爲訪問。我怎樣才能告訴瀏覽器鏈接確實被訪問過?

謝謝!

回答

4

那麼,既然你做了return false,它還沒有去過。你可能做的最好的事情就是風格。

$(this).addClass('visited'); 

CSS

.visited { 
    color: purple; 
} 
+2

雖然我會讓它'a:visited,a.visited {color:#00e; }'這樣實際訪問的鏈接和標有'visited'類的鏈接的樣式都是相同的。 – tvanfosson

+0

@tvanfosson:+1好主意。 – user113716

2

有關添加自定義類,這些情況是怪異。下次頁面刷新時會發生什麼?你不需要跟蹤所有訪問過的類的鏈接,並將該信息保存到後端,以便在後續請求中恢復該信息?我認爲所有這些樣式都會被刪除,因爲所有的邏輯都是通過JavaScript在客戶端完成的。瀏覽器通常會維護一個緩存並保存該信息。

+0

我同意 - 如果信息持續存在,情況會好得多。有沒有辦法實現這一點? UI對話框中的AJAX請求會更好嗎? – Tak

+0

那麼......它可以完成,但你必須開始在你的超鏈接上粘貼id,這樣你才知道如何在下一次刷新時進行檢索。 AJAX請求可能會工作,但我不想爲了使鏈接變成紫色而盲目往返服務器。這是你的想法嗎?只需向服務器發出請求,而不關心響應?如果你確實想這樣做,你最好在這些圖像上加上etags,這樣它們就不會被盲目服務。我想如果你真的想要它堅持下去,那麼後者將是最簡單的方法。 –

+0

不,我想通過AJAX將href的內容加載到對話框中,因此瀏覽器正在提取URL並希望將其計爲「visited」 – Tak