-1

我有(我相信)一个非常简单的问题,但无法弄清楚出了什么问题。代码将说明一切:

$(".all-products h3").mouseenter(function () {
    $(this).siblings('p').slideDown(200);
}).mouseleave(function () {
    $(this).siblings('p').slideUp(500);
});

这是html:

<a title="xxx" href="#">
    <img src="1.jpg"/>
    <p>description</p>
    <h3>header3</h3>
</a>

这个工作正常,但是当我在jquery中用a替换h3时为什么它不起作用,所以它在下面不起作用

$(".all-products a").mouseenter(function () {
    $(this).siblings('p').slideDown(200);
}).mouseleave(function () {
    $(this).siblings('p').slideUp(500);
});
4

4 回答 4

2

a不是 的兄弟p,它是 的父级p。尝试使用.children('p')or.find('p')代替(前者更具体)。

于 2013-02-06T00:23:44.760 回答
1
$(".all-products a").mouseenter(function () {
    $(this).find('p').slideDown(200);
}).mouseleave(function () {
    $(this).find('p').slideUp(500);
});

a 的兄弟姐妹将存在于 DOM 中的同一级别。在您的情况下,您想要 .find() 元素或调用 children()。无论哪种方式。

于 2013-02-06T00:23:13.093 回答
1

因为你正在使用兄弟姐妹。

尝试这个:

$(".all-products a").mouseenter(function(){
          $('p', this).slideDown(200);
           }).mouseleave(function() {
          $('p', this).slideUp(500);
        });
于 2013-02-06T00:23:26.980 回答
1

好吧,主要问题似乎是该p元素不是a. 您需要替换siblings()children()

于 2013-02-06T00:24:20.300 回答