2010-07-13 117 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