2012-04-27 57 views
1

我得到這個JavaScript的工作jQuery的addClass不工作: 「屬性或方法addClass不支持」

$(".mail-tile").click(function() { 
    var idMessage = $(this).attr('data-message-id'); 
    $('.mail-tile').removeClass(classeEvidenzaRigaSelezionata); 
    $(this).addClass(classeEvidenzaRigaSelezionata); 
    previewMail(this);   
}); 

然後,在同一頁上,同樣的js文件,我有這個JavaScript:

function selectMail(idMail) { 
    var mailTile = $('.mail-tile[data-message-id="' + idMail + '"]')[0];  
    $('.mail-tile').removeClass(classeEvidenzaRigaSelezionata); 
    mailTile.addClass(classeEvidenzaRigaSelezionata); 
    previewMail(mailTile); 
} 

在這種情況下,addClass函數不起作用:「屬性或方法addClass不受支持」。

classeEvidenzaRigaSelezionata是一個全局變量。

我不明白這兩個代碼段之間有什麼區別。在這兩種情況下,我都得到了一個HtmlDivElement來處理(對象不爲空)。 這是怎麼回事?

+0

你錯過了之前的報價和類名之後: – kayen 2012-04-27 11:01:39

+0

你失蹤後'mailTile.addClass(classeEvidenzaRigaSelezionata)分號' – Elen 2012-04-27 11:02:41

+0

@kayen:不,'classeEvidenzaRigaSelezionata'是一個全球性的字符串變量,其中包含類的實際名稱。感謝您的支持。問題更新更精確 – themarcuz 2012-04-27 11:04:29

回答

1

您需要在ID選擇器後刪除[0]。這不會給你jQuery element你以後使用addClass(classeEvidenzaRigaSelezionata)

使用這個:var mailTile = $('.mail-tile[data-message-id="' + idMail + '"]');

+0

你是對的。但在這種情況下它不返回一個元素數組? – themarcuz 2012-04-27 11:11:21

+0

是的,如果您需要訪問第一個元素,您需要執行以下操作: var mailTile = $('。mail-tile [data-message-id =''+ idMail +'「 ]:第一'); – kayen 2012-04-27 11:14:53

+0

@kayen或更好的'.first()',但如果數組保證只有一個元素,則不需要。 – Alnitak 2012-04-27 11:15:31