2012-02-01 10 views
0

我有我的網站上的頁面的鏈接列表。我希望鏈接在用戶點擊它們時改變它們的外觀(變得粗體)。我爲「主頁」鏈接設置了默認值,因此當用戶第一次訪問網站時,「主頁」鏈接爲粗體。問題是,無論何時單擊另一個鏈接,我都可以看到它會非常簡短地變爲粗體,但是默認情況下返回到「主頁」鏈接爲粗體,因爲這是硬編碼到網站的默認值。我怎樣才能改變這一點,以便粗體顯示的鏈接是用戶當前所在頁面的鏈接(並非總是默認回到「主頁」鏈接爲粗體)?非常感謝您的幫助!無法永久更改選擇器與jquery由於頁面刷新

下面是HTML:

<table class="sidebar_table"> 
    <tr class="option"> 
     <td class="select selected">image</td> 
     <td><a href="my_website_link">A Link</a></td> 
    </tr> 
</table> 

這裏是我使用的jQuery代碼:

$('tr.option').click(function() { 
$('tr.option td.select').removeClass('selected'); 
$(this).find('td.select').addClass('selected'); 
}); 
+1

CSS':visited'有問題嗎?它存在......很長一段時間。你不需要用jQuery做任何事情,你知道。 – 2012-02-01 19:57:50

+0

@LightnessRacesinOrbit你知道嗎,他從來沒有說過它有任何錯誤*。有時候人們會忘記一些事情。 – Blazemonger 2012-02-01 20:07:39

+0

@LightnessRacesinOrbit - 我不認爲他希望用戶訪問的所有鏈接都是粗體,只有與當前文檔關聯的鏈接。所以我希望這個解決方案可以實現服務器端(最佳),或者使用Javascript並檢查'location.href'。 – 2012-02-01 20:16:44

回答

1

選項1)你可以檢測用戶是用PHP的頁面,並寫那種方式。

選項2)如果你不想使用PHP,你可以使用一個文件準備調用添加類加載網頁時:

$(document).ready(function(){ 
    $('.sidebar_table .option .my_website_link').each(function(){ 
     // logic for adding the class to the page the user is on 
     if(XXXXXXXXX){ 
      $(this).addClass('selected'); 
     } 
    }); 
}); 
+0

鏈接是根據網站的特定用戶動態生成的,因此對解決方案進行硬編碼可能不是最好的方法。感謝迄今爲止的評論。 – 2012-02-01 20:37:25

1

......怎麼

HTML

<table class="sidebar_table"> 
    <tr class="option"> 
     <td class="select page1">image</td> 
     <td><a href="my_website_link.html#page1">A Link</a></td> 
     <td class="select page2">image</td> 
     <td><a href="my_website_anotherlink.html#page2">A Link</a></td> 
    </tr> 
</table> 

腳本

... 
var page = window.location.hash; 

$('.option').find('a').each(
    function (i, el) { 
     if ($(el).hasClass('page')) { 
      $(el).addClass('selected'); 
     } 
    }; 
); 
... 

...或使用php或本地存儲。

編輯:好的,我剛剛意識到這與circusdei的建議非常相似。然後OP說「鏈接是動態生成的」那麼,大多數頁面都是動態生成的,對吧?那麼如何動態地將一些關鍵字插入鏈接的哈希,td的類和腳本?

+0

喜歡本地存儲的想法......不要忘記那就是未來。 – circusdei 2012-02-08 21:06:58