1

我有一堆将属性 ORIGINAL 设置为初始值的输入文本框,这样当用户更改文本框值时,jQuery 可以突出显示已更改的项目(通过将文本框的当前值与 ORIGINAL 属性的值进行比较)

我现在要做的是为用户提供一个按钮,他们可以单击该按钮以根据每个文本框的 ORIGINAL 属性的值将所有文本框恢复为其原始值。

例子

$('input[type=text]').val($(this).attr('original'));

以上不起作用,我不明白为什么。

4

4 回答 4

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'));

它实际上是指当前范围。当您使用 jQuery 迭代集合时,each将调用它的回调并将迭代中的当前元素分配为当前范围($(this)this)。

作为旁注,input:text是一种更漂亮、更简洁的说法input[type=text]

于 2010-05-06T13:29:54.593 回答
0

像这样的东西:

$('input[type=text]')each(function(){$(this).val($(this).attr('original'));}
于 2010-05-06T13:29:53.457 回答
0

您可以在任何输入上调用 .defaultValue 以获取其原始值

于 2010-05-06T13:40:59.840 回答
0

val接受一个函数:

$('input:text').val(function () {
    return $(this).attr('original');
});
于 2010-05-06T14:06:08.013 回答