当悬停父div时,更改子div的背景颜色

发布于 2024-10-19 14:43:56 字数 1023 浏览 2 评论 0原文

我有以下设置:

<div class="parent">
  <div class="child">
  </div>
  <div class="child">
  </div>
  <div class="child">
  </div>
</div>

当鼠标悬停在其中任何一个上时,我试图同时更改所有它们的所有背景颜色。我尝试过:

<script type="text/javascript">
 $(function() {
    $('.parent').hover( function(){
       $(this).css('background-color', 'gray');
    },
     function(){
      $(this).css('background-color', 'red');
    });
 });
 </script>

但是,颜色没有“透过”子元素

来显示。

有没有办法选择“this”的后代。我连续有很多这样的集合,所以我想我需要使用“this”,这样我就不会通过 id 调用每个父级。我在想这样的事情:

<script type="text/javascript">
 $(function() {
    $('.parent').hover( function(){
       $(this "div").css('background-color', 'gray');
    },
     function(){
      $(this "div").css('background-color', 'red');
    });
 });
 </script>

但是,不能完全让它工作 - jquery.com 上的所有示例都使用 id 选择器...没有一个使用“this”。

多谢!

I have the following setup:

<div class="parent">
  <div class="child">
  </div>
  <div class="child">
  </div>
  <div class="child">
  </div>
</div>

I'm trying to change all the background color of all of them at the same time, when the mouse is hovering over any one of them. I tried:

<script type="text/javascript">
 $(function() {
    $('.parent').hover( function(){
       $(this).css('background-color', 'gray');
    },
     function(){
      $(this).css('background-color', 'red');
    });
 });
 </script>

But, the color is not "showing through" the children <div>s.

Is there a way to choose the descendents of "this". I have many of these sets in a row, so I think I need to use "this" so I don't have the call each parent by id. I'm thinking something like this:

<script type="text/javascript">
 $(function() {
    $('.parent').hover( function(){
       $(this "div").css('background-color', 'gray');
    },
     function(){
      $(this "div").css('background-color', 'red');
    });
 });
 </script>

But, can't quite get it to work - all the examples on jquery.com use the id selector... none use "this".

Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

碍人泪离人颜 2024-10-26 14:43:56

如果您的目标不是 IE6,则无需使用 JavaScript,纯 CSS 即可解决问题:

.parent, .child {
    background-color:red;
}

.parent:hover, .parent:hover .child {
    background-color:gray;
}

If you're not targeting IE6, no need to use JavaScript, pure CSS will do the trick:

.parent, .child {
    background-color:red;
}

.parent:hover, .parent:hover .child {
    background-color:gray;
}
蓝眸 2024-10-26 14:43:56

你已经尝试过 .children() 了吗?

jQuery API

have you already tried .children()?

jQuery API

楠木可依 2024-10-26 14:43:56

您可以使用 .find()

$(this).find('div').css('background-color','red');

http://api.jquery.com/children/

you can use .find()

$(this).find('div').css('background-color','red');

http://api.jquery.com/children/

酒解孤独 2024-10-26 14:43:56

试试这个:

 $(function() {
    $('.parent').hover( function(){
       $(this).children("div").css('background-color', 'gray');
    },
     function(){
       $(this).children("div").css('background-color', 'red');
    });
 });

演示: http://jsfiddle.net/zt9M6/

try this:

 $(function() {
    $('.parent').hover( function(){
       $(this).children("div").css('background-color', 'gray');
    },
     function(){
       $(this).children("div").css('background-color', 'red');
    });
 });

demo: http://jsfiddle.net/zt9M6/

失而复得 2024-10-26 14:43:56

您正在使用带有混合参数的 $() - 它要么必须是一个字符串作为选择器 (div),要么只是一个 DOM 元素 (this< /代码>)。要选择 this 上下文中的所有 div,请尝试像这样调用它:

<script type="text/javascript">
 $(function() {
    $('.parent').hover( function(){
       $("div", this).css('background-color', 'gray');
    },
     function(){
      $("div", this).css('background-color', 'red');
    });
 });
 </script>

From http://api.jquery.com/jQuery/#jQuery1

You're using $() with mixed arguments - it's either got to be a string as a selector (div), or just a DOM element (this). To select all divs within the context of this, try calling it like this:

<script type="text/javascript">
 $(function() {
    $('.parent').hover( function(){
       $("div", this).css('background-color', 'gray');
    },
     function(){
      $("div", this).css('background-color', 'red');
    });
 });
 </script>

From http://api.jquery.com/jQuery/#jQuery1

月亮坠入山谷 2024-10-26 14:43:56

用 CSS 类来做

.parent .child{
    background-color: red;
}

.hoverstyle .child{
    background-color: gray;
}

$(.parent')hover(function() {
    $(this).addClass("hoverstyle"):
},
function(){
    $(this).removeClass("hoverstyle");
});

Do it with CSS classes

.parent .child{
    background-color: red;
}

.hoverstyle .child{
    background-color: gray;
}

$(.parent')hover(function() {
    $(this).addClass("hoverstyle"):
},
function(){
    $(this).removeClass("hoverstyle");
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文