2011-02-08 9 views
1

が必要:親指のdiv idはホバー時に、私は子供pをアニメーション化することができるようにjqueryのセレクタは、私は次のマークアップを持っている

<div class="thumb"> 
    <img src="thumb.jpg"/> 
    <p>Some text here</p> 
</div> 

は基本的に私は、セレクタを必要としています。

私はこれを試してみた:

$('.thumb').hover(function() { 
    $(this > "p")animate({ "top":"35px" }); 
}, function() { 
    $(this > "p").animate({ "top":"115px" }); 
}); 

は、何らかの理由でしかし動作しません。

おかげ

答えて

4

thisは、オブジェクト、文字列ではありませんので、あなただけのセレクタにそれを置くことはできません。

$(this).find("p").animate({"top": "35px"}); 

セレクタ".thumb p"に対応:あなたは代わりに.find()メソッドを使用します。 ".thumb > p"と同じ動作を得るには、.find("p")ではなく.children("p")を使用できますが、ここでの違いは重要ではありません。

それはあなたがそのようなanimate前に行方不明.としてタイプミスをしないことも非常に重要です;)

1

多分:

 
$('.thumb').hover(function() { 
    $(this).find('p').animate({ "top":"35px" }); 
}, function() { 
    $(this).find('p').animate({ "top":"115px" }); 
}); 
+0

どのようにあなたが子供に見つけることを変更しますか?それは彼がセレクターを見て望むものでなければなりません。 – Alxandr

+0

子ども()は読むのが直感的ですが、見つけにくいのは超高速です;) – MatejB

+0

これは彼が求めていたものではありません。彼はすべてのP要素を望んでいないし、Alxandrが言うように、彼は最初の子供だけを望んでいないと言っている。彼の元のコードはすべての第一レベルの子要素Pを要求しようとしていました。彼はこれを望むかもしれないし、望まないかもしれないが、それは事実上彼が求めていたものである。申し訳ありません - 私は賢明です、私の言葉は、彼が明らかに持っているよりも複雑なHTMLを持っている場合にのみ当てはまります。このコメントを無視する!!!!! – Neil

0

これは動作しません:

$(this > "p") 

これを試してみてください:

$(this).find('p') 
1

.children()を使用して<p>タグを選択することができます - http://api.jquery.com/children/:へ

$(this).children('p').animate(...); 
+1

$( 'p'、this) 'ではなく "$(this).children(' p ')"を書くことは、 "$(div).children(' p ')と同じです"よりも" $( 'div p') "。 – Neil

+0

Neil +1ありがとうございました。 –

2

変更:

$('>p', this).animate({.... 

この構築物は、あなたがやろうとしていたものである、「この」最初のレベルのP要素を抽出します。 Pタグである第1レベルの子を取得するためにfind()やchildren()などを使う必要はありません。私は、この構造がよりシンプルでより直感的だと思います。

P.S.あなたはまた、「。」を持っています。あなたの最初の 'アニメート'の前に行方不明。

関連する問題