javascript 函数转换为 jquery 等价函数

标签 javascript jquery

我有一个如下编写的 JavaScript 函数,它在 Firefox 中可以很好地下载给定的 txt 内容。

  self.downloadURL = function (url) {
        var iframe;
        iframe = document.getElementById("hiddenDownloader");        
        if (iframe === null) {
            iframe = document.createElement('iframe');
            iframe.id = "hiddenDownloader";
            iframe.style.display = "none";
            document.body.appendChild(iframe);
        }
        iframe.src = url;
    }

但由于某些原因,它不能在 IE 9 上正常工作。所以我尝试转换成等效的jquery,因为jquery与所有浏览器兼容。

这是相同功能的 jquery 等效项:

   self.downloadURL = function (url) {
        var iframe;
        iframe = $("#hiddenDownloader");        
        if (iframe === null) {
            iframe = $('<iframe></iframe>');
            iframe.id = "hiddenDownloader";            
            $("#hiddenDownloader").css("display", "none");
            $(document.body).append(iframe);
        }
        iframe.src = url;
    }

但现在它在两种浏览器中都不起作用。请帮助我知道我做错了什么。

最佳答案

您的问题在于:

iframe = $('<iframe></iframe>');
iframe.id = "hiddenDownloader";       

iframe 指的是 jQuery 对象而不是 DOM 节点。您必须使用 .prop 来设置 id:

iframe = $('<iframe></iframe>');
iframe.prop('id', "hiddenDownloader");       

你也有同样的问题:

if (iframe === null) {

您需要检查iframe的长度:

if (iframe.length === 0) {

再次在iframe.src = url;也许你可以弄清楚这一点:

iframe.attr('src', url);

但是为什么要将普通 JavaScript 转换为 jQuery?

关于javascript 函数转换为 jquery 等价函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18636512/

相关文章:

javascript - 禁用浏览器状态栏文本

javascript - Stripe 结帐。查询客户金额

c# - 将 Razor 与 Jquery 合并以实现自动完成功能

javascript - Webpack 在 JS 文件中抛出一个奇怪的语法错误

jquery - 如何将 jQuery 变量传递给 PHP 代码?

javascript - Jquery 裁剪 : cropper image not changing

javascript - 根据 JavaScript 的 Parent Id 将对象设为子对象

javascript - 未捕获的类型错误 : Cannot read property 'height' of undefined

javascript - jQuery 替换为正则表达式无法正常工作

javascript - 附加到 JQuery 中的值