0

要素の親とその最初の子をすべて選択し、元の要素自体も選択したいと考えています。マークアップの例を次に示します。

<ul id="end-here">
  <li>
    <a href="/path">Link</a>
  </li>
  <li class="select-me">
    <a class="select-me" href="/path">Another link</a>
    <ul>
      <li>
        <a href="/path">Submenu link</a>
      </li>
      <li class="select-me">
        <a class="select-me" id="start-here" class="change-me" href="/path">Another submenu link</a>
      </li>
    </ul>
  </li>
</ul>

$('#start-here') から始めて、すべての $('.select-me') を $('#end-here') で停止したい

私はこれまでのところこれを持っています

$('#start-here').add($('#start-here').parentsUntil('#end-here', 'li, a'))

ただし、元の要素の直接の親ではないため、タグの子が失われます。したがって、上記の次の要素は含まれていません。

<a class="select-me" href="/path">Another link</a>
4

2 に答える 2

3

あなたのコード例は、「要素の親とその最初の子をすべて選択し、元の要素自体も選択する」という、あなたが求めているものと一致しません。サンプル コードは次のようになります。

<ul id="end-here">
  <li class="select-me">
    <a href="/path">Link</a>
  </li>
  <li>
    <a class="select-me" href="/path">Another link</a>
    <ul>
      <li class="select-me">
        <a href="/path">Submenu link</a>
      </li>
      <li>
        <a class="select-me" id="start-here" class="change-me" href="/path">Another submenu link</a>
      </li>
    </ul>
  </li>
</ul>​

そして jQuery セレクター:

$("#start-here").parentsUntil("#end-here").andSelf().map(function(){
    return $(this).parent().children()[0];
});

上記は、例でselect-meクラスを持つ 4 つの要素を返します。

ただし、コード例が正しい場合、選択プロセスは一般的または柔軟にすることはできず、いくつかの要素タイプを指定する必要があります。

var elems = $("#start-here").parentsUntil("#end-here", "li");
elems.add(elems.children("a"));

上記の解決策を提供してくれたStanoに感謝します。

于 2012-10-04T11:57:17.940 に答える
0

テストされていませんが、次のようになるはずです。

$('#start-here').add($('#start-here').andSelf().parentsUntil('#end-here', 'li, a')).andSelf().children().first();
于 2012-10-04T11:27:56.527 に答える