0

わかりました、2時間後、これを修正できません...

私は持っている:

<section id="sectionmain">
  Section1
 <article data-type="mainarticle" class="page-article" id="home-main">
   <section>
      Section2
     <nav data-parent="home-main" data-type="mainleft" class="page-left">Nav2</nav>
   </section>
  </article>
 <nav data-type="mainleft" class="page-left">
    Nav1
 </nav>
</section>

$("#sectionmain").first().find("[data-type='mainleft']")[0];

参照: http://jsfiddle.net/uYZmq/3/

of#sectionmainを持つターゲットの子である最初の要素を見つけたいと思います。data-type"mainleft"

フィドルでわかるように、ネストされた<article>ブロックがあります。も含まれていますが<nav>、同じdata-typeですが、それは必要ありません。最初の出現が必要です。しかし、どういうわけか、firefox と chrome の両方が、2 番目にネストされたものが最初のものであると考えていますが、これは意味がありません。これを回避する方法はありますか?ターゲットの REAL の最初の要素を見つけますか?

.children()、 、.closest()および他の組み合わせをすべて試しましたが、何もしませんでした。

これよりも多くのネストがある場合でも機能する必要があります。

要素の id 内を検索して、その子ではなく'its' を見つけたいだけです。したがって、基本的に検索を 1 つのレベルに制限します。<nav><nav>

(データ型に同じ名前を付ける必要があります (page-left)。css を介してスタイル設定されます。また、要素に追加のクラスや変数を追加したくありません)

/edit: [0] を [1] にしたくない。状況に関係なく機能するコードが必要です。

4

1 に答える 1

2

#sectionmain ターゲットの子で、データ型が「mainleft」の最初の要素。

document.querySelector("#sectionmain>[data-type='mainleft']")

またはjQueryを使用:

$("#sectionmain>[data-type='mainleft']")[0]

記号は>クエリを直接の子に制限します。

于 2013-10-19T15:32:23.127 に答える