0

海我有以下 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');

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

4

3 回答 3

2

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

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

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

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

var ascende = $(this).parents('ul').slice(-1).prev();
于 2012-09-12T07:44:02.887 回答
1

您可以通过获取该班级的父母列表content并获取最后一个父母,然后检查该班级的兄弟姐妹的跨度来做到这一点contentParent。这确实假设没有更多ul的元素具有content更进一步的 dom 类。

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

http://jsfiddle.net/UQhte/

于 2012-09-12T07:55:53.053 回答
-1

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

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

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

于 2012-09-12T07:54:24.687 回答