替换多个CSS文件

时间:2013-05-09 03:22:52

标签: jquery

所以我想在一个页面上替换3个css文件,在某些页面上有可能是第4个...在阅读之后,我有这个:

$("link").each(function(index) {
switch (index) {
    case 1: $this.attr("href","css1.css");
            break;
    case 2: $this.attr("href","css2.css");
            break;
    case 3: $this.attr("href","css3.css");
            break;
    case 4: $this.attr("href","css4.css");
            break;  
}
});

不幸的是,这不起作用。我觉得我正在使用“这个”,但我真的不知道。

3 个答案:

答案 0 :(得分:3)

您错过了对$this jQuery对象元素

$(this)引用
$("link").each(function(index) {

    var $this = $(this); // dyadaaa!

    switch (index) {
        case 0: $this.attr("href","css1.css");
                break;
        case 1: $this.attr("href","css2.css");
                break;
        case 2: $this.attr("href","css3.css");
                break;
        case 3: $this.attr("href","css4.css");
                break;  
    }

});

.each()方法将参数索引作为元素数组集合中基于zero的值,因此您也可以从0开始


只是为了分享一个秘密;)你可以这样做:

var links = ['css1.css', 'css2.css', 'css3.css', 'css4.css'];
$('link').each(function( i ){
   $(this).attr("href", links[i]);
});

或者(如果您的样式表真的这样命名)就像:

$('link').each(function( i ){
   $(this).attr("href", "css"+ (i+1) +".css");
});

...从逻辑上(i+1)代替0,1,2,3将返回1,2,3,4

答案 1 :(得分:1)

没有。你正在寻找一个jquery包装器然后你需要做$(this)。但是在这里你可以直接分配给像this.href="css1.css"这样的dom元素。 此外,索引是。所以你可能需要处理案例0。

$("link").each(function(index) {
var $this = $(this);
switch (index) {
     case 1: $this.attr("href","css1.css");
        break;
case 2: $this.attr("href","css2.css");
        break;
case 3: $this.attr("href","css3.css");
        break;
 case 4: $this.attr("href","css4.css");
        break;  
}
});

你可以把它写成,因为this这里指的是DOM元素本身,href可以作为属性访问。

$("link").each(function(index) {

switch (index) {
case 0: ??// Something here?
case 1: this.href ="css1.css";
        break;
case 2: this.href="css2.css";
        break;
case 3: this.href="css3.css";
        break;
 case 4: this.href="css4.css";
        break;  
}
});

答案 2 :(得分:1)

尝试使用     $(本) 代替     $这

相关问题