我刚刚在使用 JQuery 时遇到了这种奇怪的行为:
我的 HTML 中有其中之一:
<input type="file" name="pdfUrl" id="pdfUrl" />
这没有用:
$pdfUrl = $('#pdfUrl');
但这确实:
$pdfUrl = $('input:file')[0];
怎么会?
澄清一下,我的文档中只有一个带有 pdfUrl 的 ID。会不会跟name和id一样有关系?
运行 chrome 控制台会得到这个:
$('#pdfUrl')
[<input type="file" name="pdfUrl" id="pdfUrl">]
所以这似乎有效。
最佳答案
仅包含一个对象的
$("#pdfUrl")
返回与可能包含数百个 DOM 对象的 $(".rows")
相同类型的对象.这极大地简化了 jQuery 编程,因为您不必根据从选择器查询返回的对象数量来做不同的事情。
当您引用 $('input:file')[0];
时,您将进入 jQuery 对象的 DOM 对象内部数组(在选择器查询中填充)并获取该数组中的第一个 DOM 对象。那时,你有一个普通的 DOM 对象,而不是 jQuery 对象,你可以在它上面使用普通的 DOM 方法或属性。有时这是必需的(以获取实际的 DOM 对象),但通常,仅使用 jQuery 在 jQuery 对象上提供的方法会更容易。使用它们有很多优点,例如您可以将多个请求链接到大多数方法,它会自动为您遍历其内部数组中的所有 DOM 对象。
关于javascript - id 选择器与输入 :file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782198/