我有一堆输入文本框,其ORIGINAL属性设置为初始值,因此当用户更改文本框值时,jQuery可以突出显示已更改的项目(通过将文本框的当前值与ORIGINAL进行比较)属性的值)
我现在尝试做的是为用户提供一个按钮,他们可以点击这些按钮,根据每个文本框的ORIGINAL属性值将所有文本框恢复为原始值。
实施例
$('input[type=text]').val($(this).attr('original'));
以上不起作用,我不明白为什么。
答案 0 :(得分:3)
使用each
:
$('input:text').each(function() {
$(this).val($(this).attr('original')); // or this.value = $(this).attr('original');
});
您不能使用单行,因为$('input[type=text]').val()
将仅返回匹配集合中第一个元素的值。 $(this)
并不代表您认为它在您的示例中的作用:
$('input[type=text]').val($(this).attr('original'));
它实际上是指当前的范围。当您使用each
迭代集合时,jQuery将调用它的回调并将迭代中的当前元素指定为当前作用域($(this)
或this
)。
作为附注,input:text
是一种更漂亮,更简洁的说法input[type=text]
。
答案 1 :(得分:0)
这样的事情:
$('input[type=text]')each(function(){$(this).val($(this).attr('original'));}
答案 2 :(得分:0)
您可以在任何输入上调用.defaultValue以获取其原始值
答案 3 :(得分:0)
val
接受一个功能:
$('input:text').val(function () {
return $(this).attr('original');
});