非常简单的问题。我有以下代码,并希望尽可能地将其合并。无法让它工作但尝试使用逗号等。有没有办法在GetElementByID方法中调用多个ID? Javascript新手:/
$("#set50").live("click", function() {
document.getElementById("statusBox50").setAttribute("class", "statusBoxSelected");
document.getElementById("statusBox25").setAttribute("class", "statusBox");
document.getElementById("statusBox75").setAttribute("class", "statusBox");
document.getElementById("statusBox100").setAttribute("class", "statusBox");
$(".statusbar").animate({
width: '115px'
}, 500);
});
答案 0 :(得分:4)
不,但是既然你正在使用jQuery,你可以使用它。这会将statusBox
类添加到ID为statusBox25
,statusBox75
和statusBox100
的元素中:
$("#statusBox25, #statusBox75, #statusBox100").addClass('statusBox');
或者,如果您要删除所有现有类并使用statusBox
替换所有类,就像您原来的代码一样,您可以使用:
$("#statusBox25, #statusBox75, #statusBox100").attr('class', 'statusBox');
答案 1 :(得分:1)
有没有办法在GetElementByID方法中调用多个ID?
不,它是Id(小写d)
不要使用setAttribute
,除了最新版本的IE之外,它已被破坏。
您正在使用jQuery,因此您可以使用其辅助函数:
jQuery('#statusBox50').addClass('statusBoxSelected');
jQuery('#statusBox25, #statusBox75, #statusBox100').addClass('statusBox');
答案 2 :(得分:0)
您应该可以执行以下操作:
$("#set50").live("click", function() {
$("#statusBox50").addClass("selected");
$("#statusBox25, #statusBox75, #statusBox100").removeClass("selected");
$(".statusbar").animate({...});
});
请注意,我正在做一些与您不同的事情:我有一个“已选择”的类,我应用或删除,而不是设置 [statusBoxSelected | statusBox]的类。这可能是class =“statusBox”的补充。
我还建议您查看其他不会像这样硬编码ID的方法。例如:
$(".set50").live("click", function(evt) {
$('.statusBar').removeClass("selected");
$('#statusBar50').addClass("selected");
});
你甚至可以走得更远,并且在“set”元素上有一个属性,其中包含状态栏应设置的数量。
或者考虑使用HTML5进度条,以及一些垫片在不受支持的浏览器中执行相同操作。
答案 3 :(得分:-1)
$("#set50").live("click", function() {
$("statusBox50").addClass("statusBoxSelected");
$("statusBox25").addClass"statusBox");
$("statusBox75").addClass( "statusBox");
$("statusBox100").addClass( "statusBox");
$(".statusbar").animate({
width: '115px'
}, 500);
});
这是你想要的吗?
.addClass
为所选元素添加了一个类。[docs]
修改强>:
正如你所说,你想要一个单一的。
只需为要添加类的所有元素分配一个类。例如:我指定班级adding
。那么你可以添加类到这样的所有元素:
$('.adding').addClass('statusBox')