2010-07-13 115 views
0

腳本替換rel屬性爲classjQuery替換不起作用

的完整代碼 - http://jsbin.com/efozi3/8/

它不用於鏈接,其中rel使用超過2個值工作。

一個例子 - 第一個項目:

<a class="s1" rel="t1 t2 t3" href="#">One</a> 

前三<li>應該變成藍色,但現在只有第一個廣告。

<li class="t1"> 
    <strong>1</strong> 
</li> 
<li class="t2"> 
     <strong>2</strong> 
</li> 
<li class="t3"> 
     <strong>3</strong> 
</li> 

此行不按預期(在rel最多支持2個值):

return $('.' + elem.rel.replace(' ', ', .')); 

您可以直接在http://jsbin.com/efozi3/8/edit/

感謝編輯代碼。

+1

(爲什麼不斷有人濫用'rel'對這種事情沒有什麼是屬性差做值得嗎??) – bobince 2010-07-13 16:11:54

+0

@bobince:爲了驗證,也許 – SLaks 2010-07-13 16:20:37

回答

5

不管你信不信,Javascript的replace函數只會替換搜索文本的第一個出現。
要替換每次出現的事件,您需要傳遞一個帶有gG lobal)標誌的正則表達式。

將其更改爲

return $('.' + elem.rel.replace(/\s+/g, ', .')); 
+0

人,你是好人! – Happy 2010-07-13 16:08:34

+0

對不起,我在[我以前的答案]中忘記了這個怪癖(http://stackoverflow.com/questions/3238129/jquery-rel-attribute/3238187#3238187)。 – SLaks 2010-07-13 16:09:25

+0

我想沒有其他方法(除非循環直到字符串保持不變)。似乎沒有欺騙我...... – Koen 2010-07-13 16:11:42