如何使用jquery获取孩子的特定方兴未艾。

时间:2012-09-12 07:41:53

标签: jquery

Hai我有以下html列表。

<ol id="queryList">
  <li id="queryLi1">
     <span class="contentParent">First Level</span>
      <ul class="content">
        <li id="innerList594" class="content">
             Second Level
              <ul class="content">
                    <li>
                        Third Level
                        <textarea id="text1" cols="3" style="width: 250px"></textarea>
                        <input id="button1" type="button"  value="Save" >
                   </li>
             </ul>
        </li>
      </ul>
    </li>
    <li id="queryLi2">
      <span class="contentParent">First Level</span>
      <ul class="content">
        <li id="innerList525" class="content">
              Second Level
              <ul class="content">
                    <li>
                        Third Level
                        <textarea id="text2" cols="3" style="width: 250px"></textarea>
                        <input id="button2" type="button" value="Save">
                   </li>
             </ul>
        </li>
      </ul>
    </li>
      .
      .
      .(etc.,)

在此列表中,当我点击Save button1时,我想采用它的上升<li id="queryLi1"><span class="contentParent"> 元件。与所有列表项相同..例如,如果我点击Save button2我想要<li id="queryLi2"><span class="contentParent"> ..

我试过这个

 var ascende = $(this).closest('.contentParent');

但我没有得到它..任何人都可以帮助我..

3 个答案:

答案 0 :(得分:2)

.contentParent不是直系亲属,你需要找到最近的共同父亲,然后从那里进行遍历:

var ascende = $(this).closest('#queryLi1').find('.contentParent');

如果您需要在许多项目上执行此操作,请将类名称添加到最外层LI并使用类选择器而不是#queryLi1

或者,找一个兄弟,然后遍历,f.ex:

var ascende = $(this).parents('ul').slice(-1).prev();

答案 1 :(得分:1)

您可以通过获取类content的父级列表并选择最后一个,然后检查其兄弟姐妹的班级contentParent的范围来实现。这确实假设没有更多ul元素,其中content类更进一步向上。

var span = $(this)
        .parents('ul.content')
        .last()
        .siblings('span.contentParent');

http://jsfiddle.net/UQhte/

答案 2 :(得分:-1)

您可以使用.parents()jquery方法。

$(this).parents('.contentParent');

这将检索第一个找到的祖先。这是一个小提琴:http://jsfiddle.net/HLATf/3/