【问题标题】:Call a click on a newly added dom element调用一个新添加的 dom 元素的点击
【发布时间】:2013-02-14 08:31:58
【问题描述】:

我试图点击这个新创建的锚点:

$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>")
$('.download').click()  

但是没有调用点击事件。不知道这是为什么?

我试图强制下载,而不是在浏览器中打开链接。像 Dropbox 一样

编辑

这里是代码,所以更清楚:

fileEntry.createWriter ((fileWriter) ->
    fileWriter.onwriteend = (e) ->
        $('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>")
        $('.download').trigger('click');
    fileWriter.onerror = (e) ->
        console.log "Write failed: " + e.toString()
    fileWriter.write blob

), errorHandler

更新:

所以在从下面的答案中了解到这实际上是不可能的,除非服务器将数据发送给我并带有标题 Content-disposition: 附件。但在我看来,这对于纯 HTML5 JS 应用程序来说是一个非常糟糕的解决方案,可能是离线的。

所以我发现了这个,它处理得非常棒!它工作得很好。这是链接:

http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side

希望这对想要做同样事情的人有所帮助,因为我相信有很多人!

【问题讨论】:

  • 你这样点击是干什么的?
  • 用户单击链接以从 API 下载文件,一旦使用 FILE API 下载文件,它就会创建此链接。我想为用户启动下载对话框(当他点击下载文件时)。让用户点击下载似乎很愚蠢,然后一旦文件被下载,点击下载文件agian..
  • 在下面查看我的答案,我认为它会对你有所帮助

标签: click coffeescript jquery


【解决方案1】:

尝试将点击事件绑定到锚标签并调用点击事件。

$(".download").bind("click", function (e) {
            var $a = $(this);

                    window.location = $a.attr("href");

            });

 $(".download").click();

【讨论】:

  • 我已经尝试将点击事件绑定到元素,它仍然没有调用点击
【解决方案2】:

如果我理解正确,您想模拟用户点击吗?如果是这样的话,你就是这样做的:

$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>");

// simulate/trigger a click
$('.download').trigger('click');

【讨论】:

  • 谢谢,我已经尝试触发事件,但仍然没有调用点击。
【解决方案3】:

向用户显示下载已完成,然后在 1 秒后重定向到下载。

$('.file-status').html("Finished downloading <a class='download' download href='#{fileEntry.toURL()}'>#{name}</a>");

setTimeout(function () {
   window.location.href = $('.download').attr('href');  
},1000);

【讨论】:

  • 如果文件是图片,图片只会在浏览器中打开。我要强制下载
  • 很可能您需要一种服务器端语言来强制下载。 Javascript 在这方面不会帮助你。看here
  • 但我的意思是,如果用户实际点击链接,标签中的下载属性将强制下载。
  • 只能模拟anchoronclick事件。不是导航点击。 $('.download').trigger('click') 只会调用与 $('.download') 关联的 javascript 函数,但不会为您导航。
  • 所以这是不可能的?那么这个“强制下载”一定是真的来自API?
【解决方案4】:

你还没有将事件传递给主播,试试这个:http://fiddle.jshell.net/gnumA/

$('.file-status').html("Finished downloading 
                        <a class='download' onclick='alert(123);' href='#'>#{name}</a>")
$('.download').click();  

更新:

$('.download').click(function () {
    window.location.href = $(this).attr('href');
}).click();

【讨论】:

  • 好的,这行得通。但在我的示例中,我设置了属性下载,因此一旦单击,文件下载对话框就会启动。那么这将如何工作
  • 不过,如果文件是图像或 pdf 等,它会在浏览器中打开文件
【解决方案5】:

试试这个插件livequery

$('.download').livequery(function(){
    $(this).click();
});

【讨论】:

  • 我认为您错过了这里的重点。我想以编程方式单击该链接。用户可以点击它,这不是问题
【解决方案6】:

由于这个问题是用 CoffeeScript 标记的,所以这里是 CoffeeScript 的有效答案(尽管仍在使用 jQuery)。

itemId = $('.modal__product-info').attr('data-item-id')
$('#size-' + itemId).click()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多