Jquery .on ('change' ) 不会触发动态添加的元素

标签 jquery jquery-on

所以我有一个具有以下结构的页面

<div class="editCampaignBanner">
    <div>
    <hr>
    <label for="file">Upload a new image</label>
    <input id="file" type="file" name="file" class="valid">
    <label for="NewImageURLs">Link URL (Optional)</label>
    <input id="NewImageURLs" type="text" value="" name="NewImageURLs">
    <hr>
    </div>
</div>

我已经写了一些jquery:

$('div.editCampaignBanner input:file').on('change', function () {
        var value = $(this).val();
        var div = $(this).parent();
        var html = '<div>'+ div.html() + '</div>';
        if (value.length > 0) {
            div.after(html);
        }
        else if ($(this) > 1) {
            div.remove();
        }
    });

因此,当我在文件中输入一个元素时,它会在前一个元素下生成一个 div:

    <div class="editCampaignBanner">
        <div>
        <hr>
        <label for="file">Upload a new image</label>
        <input id="file" type="file" name="file" class="valid">
        <label for="NewImageURLs">Link URL (Optional)</label>
        <input id="NewImageURLs" type="text" value="" name="NewImageURLs">
        <hr>
        </div>
        <div>
        <hr>
        <label for="file">Upload a new image</label>
        <input id="file" type="file" name="file" class="valid">
        <label for="NewImageURLs">Link URL (Optional)</label>
        <input id="NewImageURLs" type="text" value="" name="NewImageURLs">
        <hr>
        </div>
    </div>

但是现在,尽管使用 .on() 注册了事件,但 div 中的第二个文件输入不会触发该事件。我错过了什么?

最佳答案

替换

$('div.editCampaignBanner input:file').on('change', function () {

$('div.editCampaignBanner').on('change', 'input:file', function () {

关于Jquery .on ('change' ) 不会触发动态添加的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950201/

相关文章:

DataTable jQuery 插件的 Javascript 错误

javascript - 如何对具有从ajax动态添加的相同类的元素应用操作?

javascript - jQuery On 事件 Off 自动解除绑定(bind)

jquery $ ('body' ).on ('click' ) 总是需要 .off ('click' ) 以避免触发多个事件

javascript - 使用 jQuery 测试输入是否有焦点

jquery - 如何为 jQuery 自动完成选择事件附加附加属性

javascript - 使用 .prop() 方法获取标签名称会引发错误,即浏览器

javascript - 将 HTML 代码存储在变量中(对于浏览器来说更快?)

jQuery .on() 单击仅正确运行一次

javascript - 如何仅在 jquery on() 函数不存在时设置它?