【问题标题】:Convert “document.getElementById” directly into jQuery将“document.getElementById”直接转换为 jQuery
【发布时间】:2011-07-11 17:52:27
【问题描述】:

我正在使用qq.uploader 类,这是我的代码的一部分:

function createUploader(elementId){
   var uploader = new qq.FileUploader({
        element: document.getElementById(elementId),

        onComplete: function(id, fileName, responseJSON){

            if (responseJSON.success) {
                $("#"+elementId + ".qq-upload-button").remove();
            }
        }
    });
}

您可以看到$("#"+elementId + ".qq-upload-button").remove(); 行不起作用,但希望您能看到我正在尝试做的事情。我的页面上有多个上传者,因此我需要分别针对特定的上传者,而不仅仅是针对班级。

(我刚刚还意识到该插件创建了一个集合#id,它将在整个页面中重复。所以我也很好奇好的 jquery 文件上传插件,它可以很好地处理每个页面的多个实例,每个页面只上传一个文件实例?)

【问题讨论】:

  • 为什么这不起作用?您甚至不需要该类,因为元素 ID 在页面上应该是唯一的。
  • 在页面上的多个元素中重复使用“id”值会导致问题。
  • 不喜欢使用 flash 上传..
  • Jquery 文件上传:aquantum-demo.appspot.com/file-upload 非闪存,使用所有可用的浏览器功能,如拖放,在旧浏览器上使用 iframe。
  • 您的“elementId”变量在 onComplete 函数的范围内是否仍然已知?尝试添加:alert(elementId);以确保。

标签: jquery jquery-plugins file-upload getelementbyid


【解决方案1】:
var id = '#' + elementId +'.qq-upload-button';
if (responseJSON.success) {
      $(id).remove();
}

【讨论】:

  • 这与原始问题中的内容几乎完全相同。
  • “几乎一样”在编程时主要表示“甚至不接近”。
  • 除了它在功能上完全相同,并且仍然包含不可估量的“id.class”选择器概念。
  • @Jules 如果你的可以工作,那么原来的也可以,因为你的更改对他发布的功能没有实质性的影响。
  • @Pointy 我曾遇到过无法按照他的方式工作的功能。虽然按照我发布的方式进行操作总是对我有用。
猜你喜欢
  • 2010-11-27
  • 2011-06-14
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 2014-03-12
  • 2010-11-16
  • 2012-05-29
相关资源
最近更新 更多