0

我有一个带有 LI 项目的 UL,这些项目构成了我的链接。每个链接都有一个“linkItem”类和“roomActive”或“roomInactive”来显示适当的 BG 图像,以及传递给我的函数以显示单击了哪个 LI 项目的 ID。

我正在尝试使用以下代码来完成此操作。

$(".roomLink")[id].removeClass('roomActive').addClass('roomInactive');

当我运行它时,我得到一个错误,上面写着“Uncaught TypeError: Object # has no method 'removeClass'”

我还尝试使用 jQuery .css("background") 并返回“Uncaught TypeError: Object # has no method 'css'”

有任何想法吗?

4

4 回答 4

0

尝试如下,

$(".roomLink").eq(id).removeClass('roomActive').addClass('roomInactive');

假设 idli你想要removeClass 和addClass 的索引。这个假设是基于你使用它的方式。(如索引)

您的代码$(".roomLink")[id]是一个 dom 对象,它没有addClass/removeClass方法。

于 2012-05-23T20:09:37.947 回答
0

尝试$($(".roomLink")[id]).removeClass.....它可能会说,因为当您索引对象数组时返回的不是 jquery 对象。

于 2012-05-23T20:10:02.423 回答
0

如果元素上有 id,则按 id:

$("#" + id).removeClass('roomActive').addClass('roomInactive');

但是如果你将点击处理程序直接绑定到 li 那么你可以这样做:

$(".roomLink").click(function(){ 
    $(this).removeClass('roomActive').addClass('roomInactive');
});

你可以像这样玩css:

$(this).css("background-image","url(imageurl)");

您需要传递 css 属性名称和值,就像您将其放在样式表中一样

于 2012-05-23T20:10:11.640 回答
0

当您访问一个元素时,[]您返回的是 DOM 元素,而不是 jQuery 对象。改为尝试eq(id)(假设 id 是索引)。

如果您在单击另一个链接时尝试切换类,那么这样的方法效果很好。

$('li').click( function() {
    //swap inactive class in for currently active link item
    $('li.active').removeClass('active').addClass('inactive');
    //add active class to the clicked one
    $(this).removeClass('inactive').addClass('active');
});
于 2012-05-23T20:10:24.873 回答