javascript - 如何将 Javascript 函数绑定(bind)到动态加载的 HTML

标签 javascript jquery ruby-on-rails

我正在使用 s3_direct_upload 组件。通常,您可以通过将元素绑定(bind)到ready或load事件中的函数来启用它,如下所示:

$(function() {
  $('#s3-uploader').S3Uploader(
    {
        remove_completed_progress_bar: false,
        progress_bar_target: $('#uploads_container'),
    }
  );
  error handling
    $('#s3-uploader').bind('s3_upload_failed', function(e, content) {
      return alert(content.filename + ' failed to upload : ' + content.error_thrown + '.');
  });
});

我遇到的问题是如何在动态加载时将其绑定(bind)到 #s3-uploader 元素。我通过 Rails 部分加载页面,因此不会触发加载事件。

我已经查看了 JQuery 'on' 方法,但它需要一个事件,但我不确定将其绑定(bind)到哪个事件。

最佳答案

您可以使用event delegation将事件处理程序添加到动态添加的元素

$(document).on('s3_upload_failed', '#s3-uploader', function(e, content) {
    return alert(content.filename + ' failed to upload : ' + content.error_thrown + '.');
});

但是只有在元素加载到 dom 后,您才必须初始化 S3Uploader 插件。所以下面的部分需要在元素加载到dom后执行

$('#s3-uploader').S3Uploader({
    remove_completed_progress_bar: false,
    progress_bar_target: $('#uploads_container'),
});

您可能需要查看加载动态元素的代码,并向其中添加一个回调处理程序,以便您可以执行此操作。

关于javascript - 如何将 Javascript 函数绑定(bind)到动态加载的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816668/

相关文章:

javascript - Popper js为 Action 菜单添加动画

javascript - ng-tagsInput 不工作

javascript - 如何使用返回的 promise 来运行控制台消息

javascript - 将 div 滚动到 div 的中心

ruby-on-rails - 通过元数据检索 Stripe Charge

javascript - Telerik MVC 网格按需填充

jquery - ajax 调用后 HTML 数据和内容丢失

javascript - 通过嵌入在该页面上的 iframe 突出显示该页面上的单词

javascript - 带有 json 的 Rail UJS

ruby-on-rails - Rails View 渲染在数据库中获取子对象花费了太长时间