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

Lia*_*iam 6 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>
Run Code Online (Sandbox Code Playgroud)

我写了一些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();
        }
    });
Run Code Online (Sandbox Code Playgroud)

所以当我在文件中输入一个元素时,它会在前一个元素下生成一个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>
Run Code Online (Sandbox Code Playgroud)

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

Den*_*ret 10

更换

$('div.editCampaignBanner input:file').on('change', function () {
Run Code Online (Sandbox Code Playgroud)

通过

$('div.editCampaignBanner').on('change', 'input:file', function () {
Run Code Online (Sandbox Code Playgroud)