当我使用JQuery vs javascript函数时,我得不到相同的结果。
这是HTML
<form id="testform">
<div id="FormContainerID"></div>
<input type="button" id="y" value="Button" />
<div id="ListContainerID"></div>
</form>
这是Javascript
01 var Form = document.getElementById('y').form;
02 //var Form = $('#y').closest('form');
03 alert(Form);
当激活第1行时,我获得了一个合法的表单对象。警报说“对象HTMLFormElement”,一切正常。
但是如果我使用第02行代替,那么Alert会说“对象对象”,然后我会因为它不是真正的Form对象而得到错误。
为什么JQuery没有返回正确的对象? 我在Chrome和IE8上获得了相同的结果。
[编辑]
我正在使用JQuery版本:jquery-1.5.1.min
[溶液]
谢谢你清除它。我将代码更改为:
var Form = $('#'+fChildID).closest('form')[0];
......现在它充当了魅力 Vivek Goel是第一个回答的人,所以对他很有信心。我投票给你了解解JQuery实例模型的其他人。
谢谢。
答案 0 :(得分:4)
jQuery在您使用它查找事物时返回jQuery
实例,而不是原始DOM元素。 jQuery
实例是匹配元素集的包装器,允许您将基于集合的操作应用于元素。这是使用jQuery的绝对基础之一。
如果您喜欢使用类似数组的表示法,您也可以访问原始元素 - [0]
,[1]
等,最多.length - 1
。所以在你的情况下,由于你只得到一个元素,它将是Form[0]
。如果您的代码与多个表单元素匹配,则第二个表单元素为Form[1]
,第三个表单元素为Form[2]
等。(在文档中很难找到使用[]
表示法但是,在我看来,其中一个差距;在过去你使用了get
方法,但是如果你对负索引使用它的特殊处理,你现在只需要它。)
您根本不需要访问原始元素。你没有说过一旦你拥有它就会对你做什么,但是如果你(比如说)提交它,只需调用submit
实例上的jQuery
函数,它会提交表格。如果你想从中获取一个属性,那就是attr
jQuery函数(例如,val = Form.attr("action")
)。
jQuery是基于集合的,但它是不对称的,起初感觉很奇怪但在实践中运作得相当好。当获取值时,函数通常仅从第一个匹配元素中获取值。当设置一个值时,函数通常将其设置在 all 匹配的元素上。
答案 1 :(得分:2)
这是因为jquery语句返回的是jquery对象而不是表单对象。 你需要像Form [0]这样的东西来访问表单元素。
答案 2 :(得分:1)
答案 3 :(得分:0)
尝试
var form = $(“#y”)。parent
这应该返回DOM树中y
的父