所以我想在一个页面上替换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;
}
});
不幸的是,这不起作用。我觉得我正在使用“这个”,但我真的不知道。
答案 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)
尝试使用 $(本) 代替 $这