我正在进行一些表单UI编码并编写了这个jQuery one-liner:
$( '输入[类型=文本]')VAL($(本).attr( '默认值'));
意图是为每个输入文本字段赋予其在属性中提供的默认值。
有什么建议吗? TIA
答案 0 :(得分:5)
$('input[type=text]').each(function () {
$(this).val($(this).attr('default-value'));
});
你this
调用中的 val()
没有引用该元素,但它只是你运行这个单行的函数的上下文。
此外,在定义自定义属性时,您可能会考虑在之前投资HTML5并使用“data- *”约定:在HTML5中,定义自定义属性是合法的,只要它们以“data-”为前缀即可。所以,我会使用“data-default”而不是“default-value”。
答案 1 :(得分:3)
尝试:
$('input[type=text]').each(function() {
$(this).val($(this).attr('default-value'));
});
您的问题是$(this)
未在您使用它的上下文中定义。
答案 2 :(得分:2)
它不起作用,因为this
的上下文不是您所期望的。试试这个:
$('input[type=text]').each(function(){
var $this = $(this);
$this.val($this.attr('default-value'));
});
答案 3 :(得分:1)
我想你想要:
$('input[type=text]').val(function(i,e) { return $(e).attr('default-value'); } );
答案 4 :(得分:-1)
因为您没有正确引用元素...
您正在立即将输入的val分配给$(this)
的当前范围,而不是您要获得的元素。
$(":text").each(function() { $(this).val($(this).attr('default-value')); });