2016-01-12 82 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