javascript - 附加 JQuery 的代码不会触发输入文件上的单击事件

标签 javascript jquery html mouseclick-event

我正在附加一小段代码,其中包含一个图像,单击该图像会触发 click事件于 input用于文件上传。当页面加载和/或刷新时,只有一个 block 一旦更改,就会触发事件以追加新 block 。

<div class="add_new_image">
    <div class="img">
        <div class="file-upload-trigger">
            <input type="file" name="imagem[]" class="none file-chooser" required/>
            <img class="more" src="/assets/auto/images/add_image.png"/>
        </div>
    </div>
</div>

用于附加的 JQuery 代码:

$('#novo_anuncio .file-chooser').change(function() {
    readURL(this);
    $('#novo_anuncio .add_new_image').append(
        '<div class="img">\n\
            <div class="file-upload-trigger">\n\
                <input type="file" name="imagem[]" class="none file-chooser" required/>\n\
                <img class="more" src="/assets/auto/images/add_image.png"/>\n\
            </div>\n\
        </div>');
});

问题是附加的代码不会触发 click事件于 input 。代码是相同的,并且正确附加在 .add_new_image 内部。主标签。可能出了什么问题?

最佳答案

您需要使用.on()因为当您绑定(bind)“更改”监听器时,新的“.file-chooser”不存在。 jQuery on 会为您处理所有这些事情。

Delegated events have the advantage that they can process events from descendant elements that are added to the document at a later time.

$('body').on('change', '#novo_anuncio .file-chooser', function() {
    readURL(this);
    $('#novo_anuncio .add_new_image').append(
        '<div class="img">\n\
            <div class="file-upload-trigger">\n\
                <input type="file" name="imagem[]" class="none file-chooser" required/>\n\
                <img class="more" src="/assets/auto/images/add_image.png"/>\n\
            </div>\n\
        </div>');
});

$('body').on('change', '#novo_anuncio .file-chooser', function() {
    alert("change");
    $('#novo_anuncio .add_new_image').append(
        '<div class="img">\n\
            <div class="file-upload-trigger">\n\
                <input type="file" name="imagem[]" class="none file-chooser" required/>\n\
                <img class="more" src="/assets/auto/images/add_image.png"/>\n\
            </div>\n\
        </div>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="novo_anuncio">
  <div class="add_new_image">
    <div class="img">
        <div class="file-upload-trigger">
            <input type="file" name="imagem[]" class="none file-chooser" required/>
            <img class="more" src="/assets/auto/images/add_image.png"/>
        </div>
    </div>
  </div>
</div>

关于javascript - 附加 JQuery 的代码不会触发输入文件上的单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913605/

相关文章:

javascript - 为什么这里似乎需要分号?

javascript - 为什么这个简单的 AngularJS ng-show 不起作用?

javascript - Web 音频 api - 缓冲音高上的 LFO

jquery - 无法使用 Jquery.getJSON 和 mvc3 获取响应

jquery - 如何检查值是否为 JSON 对象?

jquery - 为多个实例定义我自己的 JQuery 函数

javascript - Firestore 时间戳保存为 map

html - 哪个页面布局更正确?

javascript - 如何动态调整 Spotfire 文本区域的大小

javascript - 如何在 Javascript 中运行 3 秒后再次倒计时?