Javascript jQuery-逐个触发多个事件

Javascript jQuery-逐个触发多个事件,javascript,dom,jquery,Javascript,Dom,Jquery,我正在使用jquery,我需要动态修改查询(删除查询或输入新查询),而无需实际键入与tagsInput插件连接的搜索框 我的问题是我想先触发退格事件,然后进入事件。这是代码 function triggering_events() { $(".tag").each(function() { var e = jQuery.Event("keydown"); e.keyCode = 8; e.which = 8; $("#inp

我正在使用jquery,我需要动态修改查询(删除查询或输入新查询),而无需实际键入与tagsInput插件连接的搜索框

我的问题是我想先触发退格事件,然后进入事件。这是代码

function triggering_events() {
    $(".tag").each(function() {
        var e = jQuery.Event("keydown");
        e.keyCode = 8;
        e.which = 8;
        $("#input-search_tag").trigger(e); //triggering backspace event
    });
    var input = $("#input-search_tag");
    input.val("food");
    input.trigger(e); //triggering enter event
}
但只有退格事件是从上述代码触发的。我如何才能使“进入”事件起作用

谁能指出我犯的错误吗


谢谢

这里有一个问题:

$("#input-search_tag").val("food").trigger(e); //triggering enter event
.val()
返回jquery元素的字符串值,它不是可链接的方法。字符串没有
触发器
方法

您可以通过将其拆分为两个调用来解决此问题:

var input = $("#input-search_tag");
input.val("food");
input.trigger(e); // triggering enter event
或使用:

编辑:将所有事件放在一起,并重用一个事件,而不是创建多个事件:

function triggering_events() {
    var e = jQuery.Event("keydown");

    e.which = 8;
    $(".tag").each(function() {
        $("#input-search_tag").trigger(e); // triggering backspace event
    });

    e.which = 13;
    $("#input-search_tag").val("food").end().trigger(e); // triggering enter event
}

您可以尝试使用方法
removeTag
addTag
删除和添加标记:

function triggering_events() {

    var 
        idInput = 'input-search',
        input = $("#" + idInput);

    $("#"+idInput+"_tagsinput .tag").each(function() {
        var tag = $.trim($(this).find('span:eq(0)').text());
        input.removeTag(tag);
    });

    input.addTag("food");
}

有什么原因让你在一个循环中创建多个事件,而不是只创建一个并重用它?原因是我是jQuery新手:)我已经尝试过了。仍然没有触发enter事件。我已经更新了代码,请检查it@rnk您对多个事件的修复不正确。我将编辑我的答案以包含正确的修复。@jbabey,你说的是
$(“#input-search_tag”).val(“food”).trigger(e)
将导致错误,但不会,因为这不是问题,因为它被用作setter,而不是getter。(见附件)
function triggering_events() {

    var 
        idInput = 'input-search',
        input = $("#" + idInput);

    $("#"+idInput+"_tagsinput .tag").each(function() {
        var tag = $.trim($(this).find('span:eq(0)').text());
        input.removeTag(tag);
    });

    input.addTag("food");
}