聚焦非相关元素时更改元素的样式[重复]

Posted

技术标签:

【中文标题】聚焦非相关元素时更改元素的样式[重复]【英文标题】:Change style of an element when focusing a non-related element [duplicate] 【发布时间】:2015-10-07 14:51:18 【问题描述】:

当我关注输入文本元素时,我想更改提交按钮的背景颜色。

<input id="submit-element" type="submit">
<span><input id="text-element" type="text"></span>

但是,根据元素的当前设置,我认为 span 会阻止它们成为同级元素并无法使用 ~ 选择器。

那么我该怎么做呢?需要 javascript 吗?

【问题讨论】:

使用 JavaScript!愿原力与你同在。 查看相关***.com/questions/12574668/… CSS 不能上 DOM。所以要么改变 html 的顺序,要么使用 Javascript 【参考方案1】:

使用当前的 DOM,您不得不使用 javascript。下面有一个jQuery解决方案。

$('input#text-element').focus(function() 
    $('input#submit-element').css('color', 'red');
);

$('input#text-element').focusout(function() 
    $('input#submit-element').css('color', 'black');
);

【讨论】:

【参考方案2】:

您必须使用 JavaScript,因为 DOM 受 CSS 限制。尝试以下操作,它使用 onbluronfocus 输入参数:

.button  
    padding: 2px 4px;
    font: 13px sans-serif;
    text-decoration: none;
    border: 1px solid #000;
    border-color: #aaa #444 #444 #aaa;
    border-radius: 5px;
    color: #000
<a href="#" class="button" id="submit-element">New Element</a>
<span><input id="text-element" type="text" onfocus="document.getElementById('submit-element').style.backgroundColor = 'red'" onblur="document.getElementById('submit-element').style.backgroundColor = 'inherit'"></span>

【讨论】:

【参考方案3】:

试试这个..

HTML

<input id="submit-element" type="submit">
<input id="text-element" type="text">

Javascript

document.getElementById("text-element").addEventListener("focus", changeSubmitF);

function changeSubmitF()
    document.getElementById("submit-element").style.backgroundColor = "#f4f4f4";


document.getElementById("text-element").addEventListener("blur", changeSubmitB);

function changeSubmitB()
    document.getElementById("submit-element").style.backgroundColor = "transparent";

看看这个Fiddle

【讨论】:

以上是关于聚焦非相关元素时更改元素的样式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

<select> 元素的纯 CSS 样式,但仅在选择非默认选项时[重复]

仅在元素未聚焦时执行功能[重复]

更改单独的元素样式以关注其他元素[重复]

通过 JavaScript 更改 CSS 伪元素样式 [重复]

如何在onClick函数中更改React.js中元素的样式[重复]

非输入元素的JavaScript事件监听器[重复]