Jquery:在元素的类被删除后,函数继续在元素上执行

Jquery:在元素的类被删除后,函数继续在元素上执行,jquery,removeclass,Jquery,Removeclass,我试图在模糊最后一个输入后向表中添加行。它工作得很好,但每次我模糊任何输入时,它都会添加一个新行。代码如下: <script type="text/javascript"> var i = 1; $(function() { $('#addNew').click(function() { $('input').removeClass('last'); $('#all_items tr:last').after('<tr><td><input type

我试图在模糊最后一个输入后向表中添加行。它工作得很好,但每次我模糊任何输入时,它都会添加一个新行。代码如下:

<script type="text/javascript">
var i = 1;
$(function() {
$('#addNew').click(function() {

$('input').removeClass('last');

$('#all_items tr:last').after('<tr><td><input type="text" name="item_'+i+'" id="items_'+i+'" class="last field" /></td><td>and other input fields</td></tr>');

$.ajax({
    url: "js/autocomplete.php?count="+i,
    success: function(newhtml){
        newhtml += "<";
        newhtml += "/script>";
        $("head").append(newhtml);
    }
});

i++;
});

//on blur click on addNew
$('.last').blur(function() {
$('#addNew').trigger('click');
});

});
</script>
autocomplete.php类似于:

<script>
  $(function() {
    //this section autocompletes the rows. Disregard for this question
    var data = [-data retrieved by a function, working well!-];
     $( "#items_'.$count.'" ).catcomplete({ delay: 0, source: data,
        select: function(event, ui) {
            $("#price_'.$count.'").val(ui.item.price);
            $("#category_'.$count.'").val(ui.item.category);
        }
         });
  });

$(".last").blur(function() { 
  $("#addNew").trigger("click");
});
</script>
以及html:

<span id="addNew">Add Item</span>

<table id="all_items">
<tr id="header"><th>Item</th><th>Note</th><th>Quantity</th><th>Price</th></tr>
<tr id="first"><td><input type="text" name="item_0" id="items_0" class="last text" /></td>
    <td><input type="text" name="item_note_0" id="item_note_0" /></td>
    <td><input type="number" name="quantity_0" id="quantity_0" value="1" /></td>
    <td><input type="text" name="price_0" id="price_0" />
        <input type="hidden" name="category_0" id="category_0" /></td></tr>
</table>

通过检查元素,我可以看到类“last”被删除,但当我模糊它们时,这些字段仍然会在表的末尾添加一行/输入。我做错了什么?如何避免它们保持这种行为?

当您从元素中删除类时,事件附加了具有类last的元素。您必须在从元素中删除类的同时解除事件绑定。可以使用从元素中删除事件

$('.last').unbind();

当您从元素中删除类时,该事件与具有last类的元素一起附加。您必须在从元素中删除类的同时解除事件绑定。可以使用从元素中删除事件

$('.last').unbind();

就在硬币上!!!$。最后,解除绑定;成功了。非常感谢你,老板。嗯……’。最后,解除绑定;也避免了自动完成工作。我改为$'.last'。取消绑定'blur';使整个事情按预期进行。正确的硬币!!!$。最后,解除绑定;成功了。非常感谢你,老板。嗯……’。最后,解除绑定;也避免了自动完成工作。我改为$'.last'。取消绑定'blur';使整个事情按预期进行。