我刚刚用JQuery遇到了这种奇怪的行为:
我的HTML中有其中一个:
<input type="file" name="pdfUrl" id="pdfUrl" />
这不起作用:
$pdfUrl = $('#pdfUrl');
但是这样做了:
$pdfUrl = $('input:file')[0];
怎么回事?
为了澄清,我的文档中只有一个带有pdfUrl的id。它可能与名称和id有关吗?
运行chrome控制台会显示:
$('#pdfUrl')
[<input type="file" name="pdfUrl" id="pdfUrl">]
所以这似乎有效。
答案 0 :(得分:2)
$("#pdfUrl")
返回与$(".rows")
相同类型的对象,该对象可能包含数百个DOM对象。这极大地简化了jQuery编程,因为您不必根据从选择器查询返回的对象数量来做不同的事情。
当您引用$('input:file')[0];
时,您将进入jQuery对象的DOM对象的内部数组(在选择器查询中填充)并获取该数组中的第一个DOM对象。此时,您有一个普通的DOM对象,而不是一个jQuery对象,您可以使用普通的DOM方法或属性。有时这是必需的(获取实际的DOM对象),但通常,只使用jQuery在jQuery对象上提供的方法更容易。使用它们有很多好处,例如你可以将多个请求链接到大多数方法,它会自动迭代它的内部数组中的所有DOM对象。
<强> Have a look at this 强>
答案 1 :(得分:1)
是的,这是因为id不是唯一的。 pdfUrl也必须是另一个元素的id。
答案 2 :(得分:0)
如果您的html中pdfUrl
的ID是唯一的,那么$('#pdfUrl')
就可以了。
请检查pdfUrl
是否存在重复的ID。
ID必须是唯一的。
答案 3 :(得分:0)
尝试使用:$('[id*=pdfile]')
通常情况是:一个元素获取其父ID,并形成一个更长的ID,如下所示:
GrandParentID:PaarentID:ownID
..
这会导致选择器出现混淆,使用id*=