我曾经看到一篇关于 Jquery 的文字说在 Jquery 中某些属性有不同的名称。我认为这是在 Jquery 中以 val 或类似的方式访问的 value 属性。JQuery 经常这样做吗?Jquery 更改属性名称的常见做法是什么?
3 回答
jQuery 不会更改任何属性名称。
jQuery 在 jQuery 对象上实现了它自己的方法。它们与 DOM 属性或 DOM 方法完全分开。
例如,您可以使用该.val()
方法从 jQuery 对象中检索任何输入控件的值。在内部,.val()
jQuery 对象上的方法访问 DOM 对象的内容(可能使用.value
属性),但它不会以任何方式替换该 DOM 属性。您仍然可以选择使用它。
类似地,jQuery 有一个.html()
返回innerHTML
对象的方法。同样,这是 jQuery 对象上的 jQuery 方法,不会innerHTML
以任何方式替换 DOM 属性。
下面是一些代码示例来说明:
<input id="test" type="text">
<div id="title">This is my Title</div>
使用纯 JavaScript:
var text = document.getElementById("test").value;
var title = document.getElementById("title").innerHTML;
使用 jQuery:
var text = $("#test").val();
var title = $("#title").html();
请注意,这两种 jQuery 方式都是方法调用,而不是属性。
即使在使用 jQuery 对象时,您也可以使用该.get(n)
方法从 jQuery 对象中获取 DOM 对象并使用 DOM 属性,尽管通常没有理由这样做:
var text = $("#test").get(0).value;
var title = $("#title").get(0).innerHTML;
jQuery 不会更改属性名称。jQuery 返回 jQuery 实例而不是 dom 元素。
如果你这样做$thing[0].value
,它将起作用。如果你这样做$thing.prop("value")
,它将起作用。
如果你使用$thing.val();
which 是 jQuery 的 val 方法(它“有点”像 val 但也做了一堆奇怪的边缘案例魔术),那么它将“可能”返回包装的 dom 元素的值。
我不知道,这种情况是因为它可以让您设置或获取所有表单字段(文本字段、单选按钮、复选框、文本区域等)的值,而这在所有情况下都val
不可能简单地完成。input.value