切换<li>背景图片</li>

时间:2012-05-23 20:07:34

标签: jquery css class html-lists background-image

我有一个UL和LI项目组成我的链接。每个链接都有一个&#34; linkItem&#34;和#34; roomActive&#34;或&#34; roomInactive&#34;显示相应的BG图像,以及传递给我的函数的ID,以显示点击了哪个LI项目。

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

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

当我运行这个时,我得到一个错误,上面写着&#34; Uncaught TypeError:对象#没有方法&#39; removeClass&#39; &#34;

我也尝试过使用jQuery .css(&#34; background&#34;)并返回&#34; Uncaught TypeError:对象#没有方法&#39; css&#39; &#34;

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

尝试如下,

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

假设 id是您想要删除类和addClass的li的索引。此假设基于您使用它的方式。 (如索引)

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

答案 1 :(得分:0)

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

答案 2 :(得分: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属性名称和值,并将其放在样式表中

答案 3 :(得分: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');
});