javascript函数转换为jquery等价物

Ala*_*ani 0 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;
    }
Run Code Online (Sandbox Code Playgroud)

但由于某些原因,它与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;
    }
Run Code Online (Sandbox Code Playgroud)

但现在它在两种浏览器中不起作用.请帮我告诉我我做错了什么.

and*_*lrc 9

你的问题是:

iframe = $('<iframe></iframe>');
iframe.id = "hiddenDownloader";       
Run Code Online (Sandbox Code Playgroud)

iframe指的是jQuery对象而不是DOM节点.您将不得不使用.prop来设置ID:

iframe = $('<iframe></iframe>');
iframe.prop('id', "hiddenDownloader");       
Run Code Online (Sandbox Code Playgroud)

你也有同样的问题:

if (iframe === null) {
Run Code Online (Sandbox Code Playgroud)

你需要检查的长度iframe:

if (iframe.length === 0) {
Run Code Online (Sandbox Code Playgroud)

再次在iframe.src = url;Maybe你可以想出这个:

iframe.attr('src', url);
Run Code Online (Sandbox Code Playgroud)

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

  • `iframe.length === 0`(或者只是`!iframe.length)`比测试`null`恕我直言更好. (2认同)