仅更改主<li>标签的类</li>

时间:2011-11-07 11:08:49

标签: javascript jquery

我有以下未列出的列表代码,显示以下列表:

<ul>
  <li name="EMI7428"><ins class="jstree-icon2">&nbsp;</ins><a href="#"><ins class="jstree-icon2">&nbsp;</ins>organ</a>
  <ul>
  <li name="EMI7436"><ins class="jstree-icon2">&nbsp;</ins><a href="#"><ins class="jstree-icon2">&nbsp;</ins>sub organ1</a>
  <ul>
  <li name="EMI8217"><ins class="jstree-icon2">&nbsp;</ins><a href="#"><ins class="jstree-icon2">&nbsp;</ins>sub organ2</a>
  <ul> 
  <li name="EMI8224"><ins class="jstree-icon2">&nbsp;</ins><a href="#"><ins class="jstree-icon2">&nbsp;</ins>sub organ3</a>
  <ul>
  <li name="EMI7428"><ins class="jstree-icon2">&nbsp;</ins><a href="#"><ins class="jstree-icon2">&nbsp;</ins>sub organ4</a>
  </li></ul>
  </li></ul>
  </li></ul>
  </li></ul>
  </li>
</ul> 
  
    器官
      sub organ1
        sub organ2
          sub organ3
            sub organ4
            

当用户点击某个按钮时,我想更改要更改的特定<ins>标记的<li>标记的类。

我正在使用以下代码更改<ins>代码的类。

$j("li[name='"+emi_id+"'] ins").attr("class","jstree-icon2"); // set class to display new icon

除了以下错误外,它工作正常。如果用户选择了第一个<li>标记(EMI7428),则<ins>标记内的所有<li>标记(<ins>内的所有<ul>标记都会找到<li>标签)改变了他们的类,这不是我想要的行为。 我希望只更改属于具有特定名称的<li>标记的ins标记的类,并且我不希望更改传播到内部<ul>

如果有人能帮我解决这个问题,我真的很感激。

2 个答案:

答案 0 :(得分:5)

我认为你想要的选择器是:

$j("li[name='"+emi_id+"'] > ins")

>符号选择所有属于li的直接后代的元素,而不是子项非直接子元素。

答案 1 :(得分:2)

看看这里:http://api.jquery.com/child-selector/

li[name='"+emi_id+"'] > ins