0

私は次のHTMLを持っています:

<div id="wrapper">
      <div class="p1">
          <a href="#" class="quickFlipCta"><img src="Test Pictures/QuestionMark.gif" /></a>
      </div>

      <div class="p2">
          <a href="#" class="quickFlipCta"><img src="Test Pictures/flower.gif" /></a>
      </div>
</div>

ユーザーがリンクをクリックしたときに開始される機能があります。

$('a').click(function(){
   //some code here
});

関数内で、「ラッパー」div にアクセスしたいと考えています。これを行う最良の方法は何ですか?私が試してみました:

$('a').click(function(){
     $(this).parent().parent().
     //modification to wrapper
    });

しかし、それは機能していないようです。

4

3 に答える 3

7

それは完全に有効です。クリック関数が呼び出されていますか?

最善の方法は、ID を使用することです。使うだけ$("#wrapper")

.closestこのように使用することもできますが$(this).closest('#wrapper')、.closest よりも id メソッドをお勧めします

アラートまたは console.log を呼び出して、クリック関数が呼び出されていることを確認します。

$('a').click(function(){
   alert("Called");
   console.log("Called");
});
于 2012-07-13T19:09:08.637 に答える
2

あなたのコメントに基づいて、CSS の変更をアニメーション キューに追加しようとしていると仮定します。css()問題は、呼び出しが何もアニメーション化していないため、これを実行できないため、両方のcss()呼び出しがすぐに発生することです。

次のことを行うことで、あなたが試みていることを達成することができます:

$('#wrapper').css('visibility','hidden').delay(500).queue(function(next) {
    $('#wrapper').css('visibility','visible');
    next()
});

jQueryを参照delay()

デモ

于 2012-07-13T19:32:39.980 に答える
2

連鎖した親$(this).parent().parent()を使用してツリーを上に移動できます。

セレクターに一致する最も近い親を探すには、最も近いものを使用することをお勧めします。したがって、マークアップの唯一の要件は、リンクが 内にあることdiv#wrapperです。

  $('a').click(function(){
   $(this).closest('div#wrapper')
   //modification to wrapper
  });
于 2012-07-13T19:09:37.193 に答える