我有以下标记:
<div class="thumb">
<img src="thumb.jpg"/>
<p>Some text here</p>
</div>
基本上我需要一个选择器,以便当拇指div id悬停在我身上时,我可以为孩子设置动画p。
我试过这个:
$('.thumb').hover(function() {
$(this > "p")animate({ "top":"35px" });
}, function() {
$(this > "p").animate({ "top":"115px" });
});
由于某种原因不起作用。
由于
答案 0 :(得分:4)
this
是一个对象,而不是一个字符串,所以你不能把它放到选择器中。您想要使用.find()
方法:
$(this).find("p").animate({"top": "35px"});
哪个对应于选择器".thumb p"
。要获得与".thumb > p"
相同的行为,您可以使用.children("p")
代替.find("p")
,但这里的差异并不大。
在.
之前制作否错字符号(例如遗失animate
)也非常重要;)
答案 1 :(得分:2)
更改为:
$('>p', this).animate({....
这个构造提取'this'中的第一级P元素,这是你想要做的。您不需要使用find()或children()等...来获得P标记的第一级子级。我认为这种结构更简单,更直观。
P.S。你也有'。'在你的第一个'animate'之前失踪;
答案 2 :(得分:1)
也许:
$('.thumb').hover(function() { $(this).find('p').animate({ "top":"35px" }); }, function() { $(this).find('p').animate({ "top":"115px" }); });
答案 3 :(得分:1)
您可以使用.children()
选择<p>
代码 - http://api.jquery.com/children/:
$(this).children('p').animate(...);
答案 4 :(得分:0)
这不起作用:
$(this > "p")
试试这个:
$(this).find('p')