首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取动态创建的元素

获取动态创建的元素
EN

Stack Overflow用户
提问于 2012-06-09 08:06:01
回答 3查看 383关注 0票数 0

好的,我正在动态地创建隐藏的输入字段,如下所示:

代码语言:javascript
复制
$("<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");

为了便于调试,我将title输入的id更改为包含它的class (即title)。因此,似乎我应该能够使用代码$('#pid'+id+'-title')访问它。然而,情况并非如此。相反,使用$("#pid"+id+"-title")toSource()的结果是({context:({}), selector:"#pid0-title"})。顺便说一下,0是正确的ID。

我觉得我一定是遗漏了一些关于JQuery和动态元素的显而易见的东西。我显然找不到对象的原因是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-09 08:36:45

你可以通过这样的方式尝试,更加清晰有序:

代码语言:javascript
复制
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());

example

票数 2
EN

Stack Overflow用户

发布于 2012-06-09 08:08:39

您的in中有引号,也有重复的in,这两个in都无效。请只使用唯一的ID和可接受的字符(以字母开头,可以包括数字和下划线,可能还包括一些我忘记的其他字符)

代码语言:javascript
复制
$("<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中的撇号正在杀死代码。

票数 1
EN

Stack Overflow用户

发布于 2012-06-09 08:19:06

您的输入没有获得ID属性的值,因为所有输入上都有一个错误的“单引号”。

请看这个working Fiddle示例!

使您的代码适应以下内容:

代码语言:javascript
复制
$("<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提到的,你不应该在document上复制ID

input.categoryinput.author具有相同的ID

请参阅相关的documentation,其中的内容为:

...an ID属性可用于唯一标识其元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10957332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档