我在一个页面上有多个div,而该页面又包含多个输入。我想更改任何有子对话框的div的背景,并且在焦点移动到的另一个 div的输入子对象时再将其改回。到目前为止,我有以下几点:JQuery - 当孩子有焦点时对父进行操作
HTML:
<div class="explain" id="block1">
<asp:TextBox ID="TextBox1" runat="server" TabIndex="1"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" TabIndex="2"></asp:TextBox>
</div>
<div class="explain" id="block2">
<asp:TextBox ID="TextBox3" runat="server" TabIndex="3"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server" TabIndex="4"></asp:TextBox>
</div>
JQuery的:
<script>
$(document).ready(function() {
$(document).on('focusin', '.explain', function() {
if (true) {
$(this).animate({
backgroundColor: "#e0f4fb"
}, 1000);
}
});
$(document).on('blur', '.explain', function() {
$(this).animate({
backgroundColor: "#ffffff"
}, 1000);
});
});
</script>
此工作正常,如果从一个DIV的输入孩子变成另一个我选项卡。例如,如果我将焦点从'TextBox1'移动到'TextBox3','block1'将淡出,'block2'将淡入。这太棒了。
但是,当我尝试在同一个div内更改为不同的子输入时出现问题。例如,如果我从“文本框1”选项卡选择到“文本框2”,则会再次在父级上激发“焦点外”动画,然后再次退出“块1”。
那么,有什么办法可以改变父div的背景颜色,当它的一个子输入有焦点,然后只在移动到另一个div的输入子时才将其恢复回来?
尝试使用停止,然后再开始下一个动画$(this).stop()。animate( – Sunand 2014-09-03 20:45:16
我已更新我的示例,下面提供了一个小提琴的链接,我希望这会有所帮助 – 2014-09-03 21:29:21
Hey @Sunand,诀窍!如果你把这个答案放在答案中,我会将它标记为正确的。 – 2014-09-04 08:35:06