首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择子元素(输入字段)时更改父div的CSS

选择子元素(输入字段)时更改父div的CSS
EN

Stack Overflow用户
提问于 2011-06-20 06:30:13
回答 2查看 4.7K关注 0票数 1

当选择子输入文本字段或鼠标移动到容器中的任何其他元素上时,我希望更改父div的类。我已经尝试使用jQuery和CSS中的一些伪类,但都没有用。

Javascript:

代码语言:javascript
复制
$("input").focus(function () {
     $(this).parent().parent("div").css('background-color','#666');  
});

HTML:

代码语言:javascript
复制
    <div class="container_to_change">
            <div class="box1">
                &nbsp;
            </div>
            <div class="box2">
                <input type="text" class="data-entry">
            </div>
            <div class="box3">
                &nbsp;
            </div>
    </div>
EN

回答 2

Stack Overflow用户

发布于 2011-06-20 06:46:45

正如@Ibu在他对这个问题的评论中所建议的那样,您可以简单地使用:hover伪类来实现container_to_change元素的更改(取决于您希望应用的更改):

代码语言:javascript
复制
.container_to_change:hover {
    background-color: #ffa;
}

JS Fiddle demo

但是,如果您真的想要使用jQuery来完成此任务:

代码语言:javascript
复制
$('.container_to_change').hover(
    function(){
        $(this).addClass('newClassName');
    },
    function(){
        $(this).removeClass('newClassName');
    });

JS Fiddle demo

在评论中回答了来自wishIdidntsquishthatfish的问题,编辑了

当用户与input元素交互时,如何保持不同的状态?

代码语言:javascript
复制
$('.container_to_change').hover(
    function(){
        $(this).addClass('newClassName');
    },
    function(){
        if ($(this).find('input').is(':focus')){
            return false; // if the input has focus, prevent the removal of the class-name.
        }
        $(this).removeClass('newClassName');
    }).find('input').focus(
    function(){
        // ensures that the class-name is added in response to keyboard-navigation focus
        $(this).closest('.container_to_change').addClass('newClassName');
    }).blur(
    function(){
        // ensures that the class-name is removed in response to keyboard-navigation focus
        $(this).closest('.container_to_change').removeClass('newClassName');
    });

JS Fiddle demo

参考文献:

  • :hover pseudo-class.
  • hover().
  • addClass().
  • removeClass().
  • :focus.
  • focus().
  • blur().
票数 2
EN

Stack Overflow用户

发布于 2011-06-20 06:47:28

我认为在尝试获取父级的父级时,不需要指定"div“。

代码语言:javascript
复制
$('input').focus(function(){
    $(this).parent().parent().css('background-color', '#666');
});

但是你为什么要关心父母呢?你可以很容易地说:

代码语言:javascript
复制
$('input').focus(function(){
    $('.container_to_change').css('background-color','#666');
});

如果您担心特定的输入类,只需使用:

代码语言:javascript
复制
$('.data-entry').focus(function(){
    $('.container_to_change').css('background-color','#666');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6405480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档