我有一堆将属性 ORIGINAL 设置为初始值的输入文本框,这样当用户更改文本框值时,jQuery 可以突出显示已更改的项目(通过将文本框的当前值与 ORIGINAL 属性的值进行比较)
我现在要做的是为用户提供一个按钮,他们可以单击该按钮以根据每个文本框的 ORIGINAL 属性的值将所有文本框恢复为其原始值。
例子
$('input[type=text]').val($(this).attr('original'));
以上不起作用,我不明白为什么。
我有一堆将属性 ORIGINAL 设置为初始值的输入文本框,这样当用户更改文本框值时,jQuery 可以突出显示已更改的项目(通过将文本框的当前值与 ORIGINAL 属性的值进行比较)
我现在要做的是为用户提供一个按钮,他们可以单击该按钮以根据每个文本框的 ORIGINAL 属性的值将所有文本框恢复为其原始值。
例子
$('input[type=text]').val($(this).attr('original'));
以上不起作用,我不明白为什么。
使用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'));
它实际上是指当前范围。当您使用 jQuery 迭代集合时,each
将调用它的回调并将迭代中的当前元素分配为当前范围($(this)
或this
)。
作为旁注,input:text
是一种更漂亮、更简洁的说法input[type=text]
。
像这样的东西:
$('input[type=text]')each(function(){$(this).val($(this).attr('original'));}
您可以在任何输入上调用 .defaultValue 以获取其原始值
val
接受一个函数:
$('input:text').val(function () {
return $(this).attr('original');
});