javascript - 如何在每次输入更改时运行动画?

标签 javascript jquery css

我正在制作一个在您与某些输入元素交互时出现的动画。在发生输入更改事件时,脚本会添加类 highlight 并在延迟 1 秒后将其删除。

问题是,如果我切换单选按钮的速度超过 1 秒,动画将不起作用。每次输入更改时我必须使用哪些选项来运行动画?

$(':radio[name="group1"], :radio[name="group2"]').on('change', function(e) {
    $('#' + this.getAttribute('name') + ' .selected').text(this.value);
});

//
// This to get the checked radios
//
$(':radio[name="group1"]:checked, :radio[name="group2"]:checked').trigger('change');


$("div").bind('DOMNodeInserted DOMNodeRemoved', function() {
    $(this).addClass('highlight').delay(1000).queue(function(next){
        $(this).removeClass("highlight");
        next();
    });
});
input{
  display: none;
}

label{
  display: inline-block;
  width:20%;
  cursor: pointer;
  padding: 20px;
  margin: 10px;
  background: #eee;
  color: #111;
}

input:checked + label{
  background: #111;
  color: #fff;
}

div{
  background: #eee;
  color: #111;
  padding: 10px;
  margin: 4px;
}

div span{
  display: block;
  margin: 4px;
}

.title{
  font-weight: bold;
}

div.highlight {
  -webkit-animation: highlight 1s infinite;
  -moz-animation: highlight 1s;
  -o-animation: highlight 1s;
  animation: highlight 1s;
}

@-webkit-keyframes highlight {
  from {background-color: #0099cc;}
  to {background-color: none;}
}
@-moz-keyframes highlight {
  from {background-color: #0099cc;}
  to {background-color: none;}
}
@-o-keyframes highlight {
  from {background-color: #0099cc;}
  to {background-color: none;}
}
@keyframes highlight {
  from {background-color: #0099cc;}
  to {background-color: none;}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>



<input id="a" type="radio" name="group1" value="Description group1 1" checked>
<label for="a">Group1 Radio1</label>
<input id="b" type="radio" name="group1" value="Description group1 2">
<label for="b">Group1 Radio2</label>
<input id="c" type="radio" name="group1" value="Description group1 3">
<label for="c">Group1 Radio3</label>


<input id="d" type="radio" name="group2" value="Description group2 1" checked>
<label for="d">Group2 Radio1</label>
<input id="e" type="radio" name="group2" value="Description group2 2">
<label for="e">Group2 Radio2</label>
<input id="f" type="radio" name="group2" value="Description group2 3">
<label for="f">Group2 Radio3</label>

<!-- Output value here -->
<div id="group1">
    <span class="title">Group1</span>
    <span class="selected"></span>
</div>

<div id="group2">
    <span class="title">Group2</span>
    <span class="selected"></span>
</div>

最佳答案

将它们按相反方向排队:

$("div").bind('DOMNodeInserted DOMNodeRemoved', function() {
  $(this).removeClass('highlight').delay(10).queue(function(next) {
    $(this).addClass("highlight");
    next();
  });
});

(并将动画循环设置为一次)

关于javascript - 如何在每次输入更改时运行动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39859020/

相关文章:

javascript - 如何访问通过 jquery 函数添加的 ul 中的列表项

javascript - 仅当 DIV > TABLE >TR 可见时才显示 DIV > SPAN

javascript - 通过 javascript AWS sdk 将图像上传到 S3 结果为 '[object object]' 字符串

javascript - AJAX 和 DJANGO 形式

jquery - 使用此代码单击时我无法更改类背景颜色。为什么?

javascript - 粘性表头 JavaScript 无法正常工作

javascript - 根据复选框状态隐藏或显示 div

javascript - 授予 Chrome 扩展程序访问 iframe 内容的权限

php - jQuery 变量值未获取

jquery - 尽管代码没有差异,但 domain.com 和 domain.com/index.php 之间的革命 slider 高度有所不同