2

我是 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 来设置它,以防列表的顺序发生变化。

任何帮助将不胜感激。

提前致谢。

问候

4

3 回答 3

3

由于id属性应该是唯一的,因此可以这样做

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

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

于 2012-07-17T00:41:24.003 回答
1

这里至少有几个问题需要回答。

  1. 检索和设置属性,使用$.prop()链接
  2. 要通过其 id 属性检索元素,请使用哈希选择器($('#id_of_element')$('li#id_of_li_element'))(此处为选择器的完整列表
  3. 要检查检索到的集合,请查看$('selector').length. 如果没有找到任何内容,则为 0,因此您可以使用if($('li#id_of_li').length){ ... }
  4. 不要使用数字 ID,因为某些浏览器看不到它们。始终以字母开头的 id 示例<li id="li_1">而不是<li id="1">.
  5. 设置、检索和删除类,使用专用方法$.addClass('classname')$.hasClass('classname')以及$.removeClass('classname')
  6. 要检查元素是否与特定选择器匹配,您可以使用$('elements').is('selector')链接此处

我真的希望这能解决一些问题

于 2012-07-17T00:45:26.610 回答
1

这应该没问题:

var id = 2;
$('.collections li a').removeClass('current'); // reset current class
$('#' + id).addClass('current'); // set current case given an ID
于 2012-07-17T00:43:26.200 回答