2016-01-12 60 views
0

我有一个JavaScript方法,它有2个参数,第一个是tr元素的ID,另一个是实际的div。我的添加/删除类jQuery方法适用于第一项(我使用jQuery选择器)。然而,当我在传入的Div中使用它时,它会抛出一个javascript错误。为什么jQuery addClass不能在div元素上工作?

onclick="ToggleTicketDetails('[email protected](ticket.TicketID)', this);" 

我明显可以在div上使用jQuery选择器来解决这个问题,但是我想知道为什么它的行为如此。

function ToggleTicketDetails(detailsId, divSender) { 
    //alert(divSender); 
    var element = $('#' + detailsId); 
    //alert(element); 
    if (element.hasClass("TicketDetailsOff")) { 
     element.removeClass("TicketDetailsOff").addClass("TicketDetailsOn"); 
     divSender.removeClass("DivAsExpand").addClass("DivAsCollapse"); 
    } 
    else { 
     element.removeClass("TicketDetailsOn").addClass("TicketDetailsOff"); 
     divSender.removeClass("DivAsCollapse").addClass("DivAsExpand"); 

    } 
} 

回答

6

divSender是DOM元素。使用jquery对象$(divSender)对此应用removeClassaddClass

function ToggleTicketDetails(detailsId, divSender) { 
    var element = $('#' + detailsId); 

    if (element.hasClass("TicketDetailsOff")) { 
     element.removeClass("TicketDetailsOff").addClass("TicketDetailsOn"); 
     $(divSender).removeClass("DivAsExpand").addClass("DivAsCollapse"); 
    } 
    else { 
     element.removeClass("TicketDetailsOn").addClass("TicketDetailsOff"); 
     $(divSender).removeClass("DivAsCollapse").addClass("DivAsExpand"); 
    } 
} 
+0

因此,暗示jQuery扩展(如removeClass和addClass)不适用于DOM元素,但只有对象? –

+0

是的,这些只适用于物体。 @AdamHeeg – Azim