添加到href

时间:2010-11-10 22:53:57

标签: jquery

我想在链接变为“活动”时添加到href我的代码选择一个特定的类,添加一个类然后,如果它是一个特定的文件,需要这个额外的输入(“?lightbox [width] = 350& ; lightbox [height] = 170“)添加到href。我的代码如下:

 $('.active').removeClass("lightbox").addClass("lightbox");

$('.active  [href$='.swf'],[href$='.mov'],[href$='.flv'],[href$='.wmv']').attr("href", function(i, href) 
{return href + '?lightbox[width]=350&lightbox[height]=170';

不想添加到href。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

试试这个:

$(".active")
  .filter("[href$='.swf'],[href$='.mov'],[href$='.flv'],[href$='.wmv']")
  .attr("href", function(i, href) {
    return href + '?lightbox[width]=350&lightbox[height]=170';
  });

我将外部引号更改为double,因为您已在选择器内使用单引号。如果你想在字符串中包含引号,那么你必须确保它们与封装字符串的类型不同:

"This 'string' is OK"
'This "one" also'

我还将代码更改为首先选择所有“.active”元素,然后过滤掉href属性不以所需字符串(.swf,.mov,.flv或.wmv)结尾的那个元素。代码的工作方式是“.active”选择器仅应用于第一个[href]选择器。

另一件事......

由于点字符是选择器中的元字符,因此您可以尝试将其转义。

而不是:

.filter("[href$='.swf'],[href$='.mov'],[href$='.flv'],[href$='.wmv']")

试试这个:

.filter("[href$='\\.swf'],[href$='\\.mov'],[href$='\\.flv'],[href$='\\.wmv']")

更新!

我做了一些测试,\\转义不起作用,但\转义没有。此外,在我的浏览器中 - 在Win7上使用Chrome - 即使没有转义也能正常运行。