JQuery ul动态设置类

时间:2012-07-17 00:37:03

标签: jquery

我是JQuery的新手,并且努力在列表中设置元素的属性。我有以下html

<ul class="collections">
<li><a href="#" id="2">LINEN </a></li>
<li><a href="#" id="3">ANIMAL PRINTS</a></li>
<li><a href="#" id="4">BASKET WEAVE</a></li>
<li><a href="#" id="5">FAUX LEATHER</a></li>
<li><a href="#" id="6">FAUX SUEDE</a></li>
<li><a href="#" id="7">HALLMARK</a></li>
<li><a href="#" id="8">JUMBO CORD</a></li>
<li><a href="#" id="9">PHYTHON</a></li>
<li><a href="#" id="10">CHENILLE CARLTON</a></li>

我想将属性class =“current”添加到id为2的列表中的项目。

我可以使用$('.collections a').attr('class','current');

设置所有项目

我可以使用以下方法检测ID为2的项目:

if($('.collections a').attr('id') == 2){
        console.log('WE HAVE A MATCH');

    }

但在这里我不确定如何获得对实际元素的引用。

我已经使用equals方法设置了类:

        $(".collections a:eq(0)").attr('class','current');

但是,如果列表的顺序发生变化,我希望能够使用元素的id来设置它。

非常感谢任何帮助。

提前致谢。

此致

3 个答案:

答案 0 :(得分:3)

由于id属性应该是唯一的,这样做

$(".collections a#2").addClass("current")

但我强烈建议你用数字开始你的id -

答案 1 :(得分:1)

这应该没问题:

var id = 2;
$('.collections li a').removeClass('current'); // reset current class
$('#' + id).addClass('current'); // set current case given an ID

答案 2 :(得分:1)

这里至少有一些问题需要回答。

  1. 要检索和设置属性,请使用$.prop()link
  2. 通过其id属性检索元素使用哈希选择器($('#id_of_element')$('li#id_of_li_element'))(full list of selectors here
  3. 要检查已检索的馆藏,请查看$('selector').length。如果没有找到任何内容就可以使用if($('li#id_of_li').length){ ... };
  4. 请勿使用数字ID,因为有些浏览器看不到它们。始终使用字母字母示例<li id="li_1">而不是<li id="1">启动ID。
  5. 设置,检索和移除课程,使用专用方法$.addClass('classname')$.hasClass('classname')$.removeClass('classname')
  6. 要检查元素是否与特定选择器匹配,您可以使用$('elements').is('selector')link here
  7. 我真的希望这能解决一些问题