Javascript 当另一个元素处于活动状态时,jQuery会更改元素的css

Javascript 当另一个元素处于活动状态时,jQuery会更改元素的css,javascript,jquery,css,html,Javascript,Jquery,Css,Html,当输入变为“活动”时,我试图更改与输入元素相邻的标签的背景色 这将需要为点击输入和在输入元素之间进行制表工作 如果用户单击输入,我可以让它工作,但是如果用户将选项卡插入输入元素,我的解决方案就不起作用。我还必须为每个输入元素重复代码。考虑到我可能有相当多的输入元素,我想一定有一个更优雅的方式 这里是一个基本HTML+CSS的链接 假设我已经理解了您要正确执行的操作,只需将事件处理程序绑定到和事件即可。您可以使用查找紧挨着前面的同级,并设置CSS属性: $("input").focusin(fun

当输入变为“活动”时,我试图更改与输入元素相邻的标签的背景色

这将需要为点击输入和在输入元素之间进行制表工作

如果用户单击输入,我可以让它工作,但是如果用户将选项卡插入输入元素,我的解决方案就不起作用。我还必须为每个输入元素重复代码。考虑到我可能有相当多的输入元素,我想一定有一个更优雅的方式

这里是一个基本HTML+CSS的链接


假设我已经理解了您要正确执行的操作,只需将事件处理程序绑定到和事件即可。您可以使用查找紧挨着前面的同级,并设置CSS属性:

$("input").focusin(function() {
    $(this).prev("label").css("background-color", "red");
}).focusout(function() {
    $(this).prev("label").css("background-color", "gray");
});

这里有一个。

假设我已经理解了您试图正确执行的操作,只需将事件处理程序绑定到和事件。您可以使用查找紧挨着前面的同级,并设置CSS属性:

$("input").focusin(function() {
    $(this).prev("label").css("background-color", "red");
}).focusout(function() {
    $(this).prev("label").css("background-color", "gray");
});

这是一个。

我在评论中撒了谎——我将从头开始写这篇文章。我假设您在使用单击而不是选项卡时遇到的问题是由于使用了
.click()
jQuery函数。与CSS类一起使用
.focus()
,应该可以提供所需的结果:

jQuery代码:

$('input:text').focus(function(e) {
    $('label').removeClass('active');
    $(this).prev('label').addClass('active');
});
额外CSS:

label.active {
    background: red !important;
}

我在评论中撒了谎-我将从头开始写这篇文章。我假设您在使用单击而不是选项卡时遇到的问题是由于使用了
.click()
jQuery函数。与CSS类一起使用
.focus()
,应该可以提供所需的结果:

jQuery代码:

$('input:text').focus(function(e) {
    $('label').removeClass('active');
    $(this).prev('label').addClass('active');
});
额外CSS:

label.active {
    background: red !important;
}

没问题,很高兴我能帮忙:)没问题,很高兴我能帮忙:)谢谢。是的,我一直在使用
。click()
。我认为这种方法可能比James的方法更可取,因为CSS是独立于脚本可见的?我通常更喜欢使用类,但这取决于。对于单个CSS属性,它没有多大区别;如果你改变了倍数,那么一个类就简单多了。它也能把事情分开一点。谢谢。是的,我一直在使用
。click()
。我认为这种方法可能比James的方法更可取,因为CSS是独立于脚本可见的?我通常更喜欢使用类,但这取决于。对于单个CSS属性,它没有多大区别;如果你改变了倍数,那么一个类就简单多了。它也确实把事情分开了一点。