2

こんにちは、<a>.current-cat-parent の下の最初の要素をターゲットにしようとしていますが、私の jquery コードは<a>この下のすべての要素に影響を与えています。<a>最初の直接要素をターゲットにするにはどうすればよいですか? ありがとう!

$(".current-cat-parent a:first-child").click(function(e){
            e.preventDefault();
          if( $(this).hasClass('hide') ){
            $(this).next().slideDown(800);
            $(this).removeClass('hide');
          } else { 
            $(this).next().slideUp(800);
            $(this).addClass('hide');
          }
    });
<li class="cat-item cat-item-1 current-cat-parent">
  <a title="View all posts filed under Clothing" href="http://site.com/category/clothing">Clothing</a>
  <ul class="children">
    <li class="cat-item cat-item-3"><a title="View all posts filed under Jeans" href="http://site.com/category/clothing/jeans">Jeans</a></li>
    <li class="cat-item cat-item-2 current-cat"><a title="View all posts filed under Suits" href="http://site.com/category/clothing/suits">Suits</a></li>
  </ul>
</li>
4

4 に答える 4

2

これの代わりに:

$(".current-cat-parent a:first-child")

直接の子を使用します>:

$(".current-cat-parent > a:first-child")

ノート:

あなたの主な問題は.hidecssクラスだと思います。なぜそれが必要なのですか?空白の css クラスにするか、削除することをお勧めします。

フィドル

于 2013-04-03T09:29:16.330 に答える
2

eq()を使用して、最初の子をターゲットにすることができます。

$(".current-cat-parent a:eq(0)")
于 2013-04-03T09:26:44.037 に答える
1

HTML マークアップをよく見ると、すべてのa要素がfirst-childそれぞれの親にもあることがわかります。解決策は、次のセレクターのいずれかを使用することです。

.current-cat-parent > a
.current-cat-parent a:first
.current-cat-parent a:eq(0)

:firstと は同じではないことに注意してください:first-child

于 2013-04-03T09:28:44.853 に答える
1

そのはず

$(".current-cat-parent a:eq(0)").click(function(e){
于 2013-04-03T09:26:15.993 に答える