jQuery:动态地将 keyup 附加到动态创建的输入

标签 jquery dynamic element bind unbind

所以我有这个场景

当我加载表单时,我最初有一个文本类型的输入。

该输入附加了“keyup”事件,如果用户输入了超过 5 个字符,则会在输入元素之后注入(inject)新的输入文本,并从当前元素解除 keyup 事件的绑定(bind)。

HTML:

<form>
    <input id="input1" type="text" class="email-input" />
</form>

JQUERY:

$('.email-input').on({

    keyup: function() {
        if (this.value.length > 5)
        {
            var newInput = $("<input type='text' class='email-input' />");
            $('form').append(newInput);

            $(this).unbind('keyup');
        }
    }

});

我希望新创建的元素具有与原始创建的元素相同的功能。我该如何实现这一目标?

最佳答案

将事件委托(delegate)给 FORM:

DEMO

$('form').on({    
    keyup: function() {
        if($(this).data('unbind')) return;
        if (this.value.length > 5)
        {
            var newInput = $("<input type='text' class='email-input' />");
            $('form').append(newInput);
            //used to filter event, you cannot unbind here delegated event just for specific element
            $(this).data('unbind',true);
        }
    }

},'.email-input');

关于jQuery:动态地将 keyup 附加到动态创建的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546051/

相关文章:

javascript - jquery 在滚动上工作

jQuery 可以 removeClass 但不能为具有 .on ("click"的元素添加类)

javascript - 当某些框(多个 div)变成正确的颜色时,如何触发弹出窗口?

scala - 为什么在扩展 Dynamic 的类中 invokeDynamic 不起作用?

java - 动态加载java类文件的方法

jquery - 将事件处理程序绑定(bind)到 jQuery 中的多个元素变量?

javascript - 触发外部脚本并加载内容

c++ - 如果您打算让变量在超出范围后保留,您在哪里调用delete?

javascript - 如何从 JavaScript 读取 CSS 值?

Angular:从组件中的 ngFor 循环获取新的 DOM 元素