2012-04-27 146 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