jQuery第一:选择器在函数运行一次后不工作

时间:2016-10-25 21:32:06

标签: jquery addclass removeclass

当按键功能第一次运行时,它会按照我的预期运行,并将第一个类更改为addBack。之后的每个按键都没有效果。下面显示的html是在按下1键后。

HTML:

 <h1 id="id1">
    <span class="addBack">H</span>
    <span class="noBack">E</span>
    <span class="noBack">L</span>
    <span class="noBack">L</span>
    <span class="noBack">O</span>
 </h1> 

jQuery的:

    inputBox.keydown(function() {
    $("span.noBack:first").removeClass("noBack").addClass("addBack");
    });

1 个答案:

答案 0 :(得分:1)

原始答案

似乎对我很有用:

$('#inputBox').keydown(function() {
    $("span.noBack:first").removeClass("noBack").addClass("addBack");
    });
.addBack { color: green; }
.noBack {color: red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h1 id="id1">
    <span class="addBack">H</span>
    <span class="noBack">E</span>
    <span class="noBack">L</span>
    <span class="noBack">L</span>
    <span class="noBack">O</span>
 </h1> 
 
 <input id="inputBox" type="text" />

除了添加课程之外还有其他什么变化吗?比如改变输入(事件)或重新创建dom元素以便事件丢失?

编辑回答 - 似乎发生了更多导致问题的事情。

原始小提琴(来自问题下方的评论):https://jsfiddle.net/HYUTS/y0jd2zxr/5/

修正小提琴:https://jsfiddle.net/y0jd2zxr/7/

此行在每次keydown事件后重置'id1'的内容: $('#id1').html(emptyArray);

如果删除它可以正常工作。