2013-07-30 45 views
0

我試圖設置一個包含指向Disqus評論的頁面鏈接的網頁。有一條關於在鏈接that Disqus provides上添加評論數量的具體指導,但並不是很好。您僅限於使用<a>元素,並用新文本替換超鏈接的文本。根據其文本更改超鏈接的類

所以,如果我創建超鏈接這樣在我的網站:

<a href="http://mysite.com/posts/1234#disqus_thread">linktext</a> 

在頁面加載後,它看起來像這樣:

<a class="link-processed" href="http://mysite.com/posts/1234#disqus_thread"> 
    (1 and 0) 
</a> 

(注意,默認情況下,更換文本將是「1評論和0反應」,但我已修改默認文本,以返回括號中的數字。)

當超鏈接的文本是「(0和0)」時,我想隱藏鏈接。當它是其他任何東西時,我想用圖像鏈接(小語音氣泡或類似的)替換鏈接的文本。

我在想這樣做的方式可能是使用幾個類。我將默認應用第一個類(hidelink),並使用javascript將第二個類應用於<a>元素。

但是,現在我卡住了。 Javascript不是我的本地域名。雖然這看起來應該是一個簡單的任務?

回答

0

您的瀏覽器需求是什麼?如果您在使用IE8 +(或大多數其他瀏覽器),你可以使用querySelectorAllgetElementsByClassName讓所有處理環節,然後檢查其文字符合您的條件:

var elems = document.querySelectorAll('.link-processed'); 
for(var i = 0, size = elems.length; i < size; i++) 
{ 
    if(elems[i].innerText === "(0 and 0)") 
    { 
     //0 and 0. Do something 
    } 
} 

或者,如果你使用jQuery,你可以簡單地選擇含有「0,0」的所有元素,使用僞類:contains

$("a:contains('0 and 0')") 
+0

我會看看jQuery的建議,因爲我知道我們有一個網站上。 – dylanT

+0

好吧,我試過jQuery。它適用於其他頁面元素,但不適用於目標元素,我懷疑是因爲Disqus運行的其他JavaScript運行在jQuery調用之後。有沒有一種方法可以強制jQuery調用最後運行(或者至少在其他代碼之後運行?) – dylanT

+0

我想我可以使用JavaScript的「延遲」方法,因爲所有的OOTB DisQus代碼都運行異步。隨便翻了一下,基本上重寫了他們的javascript,讓我的生活變得更輕鬆。由於Disqus javascript的異步特性,上述建議在我的情況下不起作用,但現在的問題與我已解決此問題無關。 – dylanT