0

我曾经看到一篇关于 Jquery 的文字说在 Jquery 中某些属性有不同的名称。我认为这是在 Jquery 中以 val 或类似的方式访问的 value 属性。JQuery 经常这样做吗?Jquery 更改属性名称的常见做法是什么?

4

3 回答 3

1

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;
于 2012-02-21T02:08:07.287 回答
0

jQuery 不会更改属性名称。jQuery 返回 jQuery 实例而不是 dom 元素。

如果你这样做$thing[0].value,它将起作用。如果你这样做$thing.prop("value"),它将起作用。

如果你使用$thing.val();which 是 jQuery 的 val 方法(它“有点”像 val 但也做了一堆奇怪的边缘案例魔术),那么它将“可能”返回包装的 dom 元素的值。

于 2012-02-21T01:54:29.367 回答
0

我不知道,这种情况是因为它可以让您设置或获取所有表单字段(文本字段、单选按钮、复选框、文本区域等)的值,而这在所有情况下都val不可能简单地完成。input.value

于 2012-02-21T01:55:29.027 回答