好的,我正在动态创建隐藏的输入字段,如下所示:
$("<input type='hidden' id=pid'"+postid+"-title name='posts["+postid+"][title]' value='' />" +
"<input type='hidden' id=pid'"+postid+"-body name='posts["+postid+"][body]' value='' />" +
"<input type='hidden' id=pid'"+postid+"' class='category' name='posts["+postid+"][category]' value='' />" +
"<input type='hidden' id=pid'"+postid+"' class='author' name='posts["+postid+"][author]' value='' />"
).appendTo("#datatable");
为了便于调试,我改变了标题输入的id以包括它的类(标题)。因此,似乎我应该能够使用代码$('#pid'+id+'-title')
来访问它。然而,事实并非如此。相反,使用$("#pid"+id+"-title")toSource()
的结果是({context:({}), selector:"#pid0-title"})
。顺便说一下,0是正确的ID。
我觉得我必须遗漏一些关于JQuery和动态元素的明显信息。我显然无法找到对象的原因是什么?
答案 0 :(得分:2)
你可以通过这种方式尝试更加清晰有序:
var createInputs = function(postid) {
var
input = $('<input type="hidden" value="" />'),
createInput = function(id, type) {
return input.clone()
.addClass(type)
.attr('id', 'pid' + id + '-' + type)
.attr('name', 'posts[' + id + '][' + type + ']');
};
$()
.add(createInput(postid, 'title'))
.add(createInput(postid, 'body'))
.add(createInput(postid, 'category'))
.add(createInput(postid, 'autor'))
.appendTo('#datatable');
};
createInputs(1);
console.log($('#datatable').html());
答案 1 :(得分:1)
你的ids中有引号,你也有重复的id,两者都不是有效的。请使用具有可接受字符的唯一ID(以alpha开头,可以包括数字和下划线以及可能包含的其他一些我忘记的内容)
$("<input type='hidden' id='pid"+postid+"-title' name='posts["+postid+"][title]' value='' />" +
"<input type='hidden' id='pid"+postid+"-body' name='posts["+postid+"][body]' value='cccc' />" +
"<input type='hidden' id='pid"+postid+"-category' class='category' name='posts["+postid+"][category]' value='' />" +
"<input type='hidden' id='pid"+postid+"-author' class='author' name='posts["+postid+"][author]' value='' />").appendTo("#datatable");
alert($("#pid1-body").val());
上面的工作在jQuery中我可以通过ID选择并获得如图所示的值,你的id中的撇号正在查杀代码。
答案 2 :(得分:1)
您的输入未获得ID
属性的值,原因是所有输入都放错了“单引号”。
请参阅此working Fiddle示例!
根据以下条件调整您的代码:
$("<input type='hidden' id='pid"+postid+"-title' name='posts["+postid+"][title]' value='' />" +
"<input type='hidden' id='pid"+postid+"-body' name='posts["+postid+"][body]' value='' />" +
"<input type='hidden' id='pid"+postid+"' class='category' name='posts["+postid+"][category]' value='' />" +
"<input type='hidden' id='pid"+postid+"' class='author' name='posts["+postid+"][author]' value='' />"
).appendTo("#datatable");
现在,元素的选择应该没有任何问题。
注意:强>
正如@Jeff Watkins所提到的,ID
上不应该有重复的document
。
input.category
和input.author
具有相同的ID
。
请参阅相关的documentation,其中包含:
... ID属性可用于唯一标识其元素。