2011-09-05 60 views
1

真的很简单的问题。我有以下代码,并希望尽可能地将其合并。不能让它工作,虽然..尝试使用逗号等。有没有办法在GetElementByID方法中调用多个ID? Javascript新功能:/Javascript:多个GetElementByID在一个电话

$("#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);  
}); 

回答

4

不,但由于您无论如何都在使用jQuery,您可以使用它。这将statusBox类添加到用的ID statusBox25statusBox75的元素,并statusBox100

$("#statusBox25, #statusBox75, #statusBox100").addClass('statusBox'); 

另外,如果你想删除所有现有的类,并与statusBox取代他们都喜欢你原来的代码做,你可以这样做:

$("#statusBox25, #statusBox75, #statusBox100").attr('class', 'statusBox'); 
+0

谢谢!完美工作 – Zakman411

-1
$("#set50").live("click", function() { 
    $("statusBox50").addClass("statusBoxSelected"); 
    $("statusBox25").addClass"statusBox"); 
    $("statusBox75").addClass("statusBox"); 
    $("statusBox100").addClass("statusBox"); 
    $(".statusbar").animate({ 
     width: '115px' 
    }, 500);  
}); 

是这款U想要什么?

.addClass增加了一个类所选择的元素[docs]

EDIT: 正如ü说ü希望单。 只需将一个类分配给所有要添加该类的元素。例如:我分配类adding。那么在哪里addclass像这样所有元素:

$('.adding').addClass('statusBox') 
+0

@downvoted请原因? – kritya

+2

因为它没有回答这个问题:如何不重复几次呼叫。它包含一个语法错误。 (不是说downvote是我,顺便说一句)。 –

+0

看着编辑。这是你想要的吗? – kritya

1

有没有办法来调用多个ID中的getElementById方法?

不,它是编号(以小写d)

并且不使用setAttribute,它所有,但最新版本的IE被打破。

你使用jQuery,所以你可以使用它的辅助功能:

jQuery('#statusBox50').addClass('statusBoxSelected'); 
jQuery('#statusBox25, #statusBox75, #statusBox100').addClass('statusBox'); 
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"); 
}); 

你可以走得更远,并且对包含在状态栏应设置为量“设置”元素的属性。

或者考虑使用HTML5进度条,以及一些垫片在不支持的浏览器中执行相同操作。