对象上的Jquery .val()

时间:2012-01-24 17:06:33

标签: jquery map

id = [<input type=​"hidden" name=​"id" value=​"test_id">​, <input type=​"hidden" name=​"id" value=​"test_id">​]
id.val()
Result: "test_id"

我有一个带有两个HTML元素的“id对象”。有相同的原因是因为我将用一个ajax get更新两个相同的Elements。

我使用搜索表单的选择器获得了此变量“id”。

我的问题:

.val()是检查两个元素还是只检查此对象中的第一个元素“id”?

如果其中一个元素具有不同的值,那该怎么办呢?

在这个问题之后我做了什么!

  • 我现在正在使用.map()从对象
  • 获取两个值
  • 添加了对id的相等性的检查。
  • 学会了不要跳过第一个重要句子(描述) Jquery Docs =)

非常感谢!

8 个答案:

答案 0 :(得分:2)

.val()将检查运行它的元素集中第一个元素的值。如果您传递.val()这样的函数:.val(function (index, value) {}),那么您可以获取运行该函数的元素集中的每个元素的值。

您可能需要查看.val()http://api.jquery.com/val

的文档
$('input').val(function () {
    console.log(this.value);
    return this.value;
});

以下是演示:http://jsfiddle.net/mV4U6/2/(如果您更改任何输入的值,则所有输入的值将为console.log ed)

正如lonesomeday所述,这要求您返回值,以便表单元素保留其值。但是,您可以使用.map()来获取每个输入的值:

$('input').map(function (index, element) {
    console.log(this.value);
});

以下是使用.map()http://jsfiddle.net/mV4U6/3/

的演示

......也可以使用循环:

var $inputs = $('input');
for (var i = 0, len = $inputs.length; i < len; i++) {
    console.log($inputs[i][0].value);//or inputs[i].val() will also work
}

答案 1 :(得分:2)

如果您希望所有值都使用地图功能

var ids = id.map(function(index, element){
   return $(this).val();
})

答案 2 :(得分:1)

根据文档.val()以及所有其他getter方法,返回第一个选定元素的值。

http://api.jquery.com/val/#val1

http://api.jquery.com/attr/#attr1

http://api.jquery.com/prop/#prop1

答案 3 :(得分:1)

.val()返回与选择器匹配的第一个元素的值。

此外,ID必须是唯一的,因此您必须选择其他唯一 ID,或将id替换为class。另一种方法是删除id属性并按名称选择:$('[name="id"]')

答案 4 :(得分:1)

来自jQuery源代码:

val: function( value ) {
    var hooks, ret, isFunction,
        elem = this[0];

(Line 161 of src/attributes.js)

使用val测试的元素始终为[0],即集合中的第一个元素,无论有多少或值是什么。

答案 5 :(得分:1)

来自jQuery API docs

  

val()=获取集合中第一个元素的当前值   匹配的元素。

因此它仅适用于与选择器匹配的第一个元素。

答案 6 :(得分:0)

如果这是一个jQuery元素集合,.val()将只返回第一个值。

答案 7 :(得分:0)

它只获得第一个的值。 http://api.jquery.com/val/