"this“是文本字段,"new_id”是整数。
当我应用以下代码段时:
$(this).attr('id', this.id + '_' + new_id);
$(this).attr('name', this.name + '_' + new_id);
$(this).attr('value', 'test');
id会改变,名称也会改变,但值不会改变。如果我将最后一行更改为this (因此使用字符串文字)
$('#mytextfield_3').attr('value', 'test');
它起作用了。
有什么想法吗?
--编辑--感谢Steerpike的快速插件测试-我相信它应该可以工作,但我找不到错误。
下面是更多的代码:
我使用以下命令创建克隆
clone = $(this).find('.clone_fields_container:first').clone();
"clone“现在包含一个带有嵌入式输入字段的div。
生成新id后:
/** Iterate over input and select fields in container */
clone.children('input,select,textarea').each(function() {
$(this).attr('id', this.id + '_' + new_id);
$(this).attr('name', this.name + '_' + new_id);
$(this).val('test');
console.log(this);
});
文本字段没有任何值。
发布于 2009-04-22 21:38:32
我刚刚编写了一个快速插件,使用相同的代码片段运行测试,并且运行良好
$.fn.test = function() {
return this.each(function(){
var new_id = 5;
$(this).attr('id', this.id + '_' + new_id);
$(this).attr('name', this.name + '_' + new_id);
$(this).attr('value', 'test');
});
};
$(document).ready(function() {
$('#field_id').test()
});
<body>
<div id="container">
<input type="text" name="field_name" id="field_id" value="meh" />
</div>
</body>
因此,我只能假设您的代码中发生了其他事情。你能提供更多的细节吗?
发布于 2009-04-22 21:29:25
你试过了吗
$(this).val('test');
而不是
$(this).attr('value', 'test');
val()
通常更容易,因为您需要更改的属性在不同的DOM元素上可能不同。
发布于 2009-04-22 21:38:11
当您像这样设置一个attr()
command中的所有属性时会发生什么
$(this).attr({
id : this.id + '_' + new_id,
name: this.name + '_' + new_id,
value: 'test'
});
https://stackoverflow.com/questions/779300
复制相似问题