JQuery,在尝试访问textarea的ID时收到“未定义”消息

时间:2011-07-03 00:44:11

标签: jquery

我正在尝试使用jquery的attr()函数更新表单元素的ID。用于调试目的。

我似乎能够为其他元素赋值,例如attr('title','test')工作得很好。只有当我想更新ID时才会这样。

我想要更新ID的全部原因是我正在动态构建表单字段并需要为它们分配ID。

<!DOCTYPE html>
<html>
<head>

<script src="http://code.jquery.com/jquery-latest.js"></script>
   <script>
   function addQuestion(){
   $('#question0Container').clone().appendTo('#questionArea');
   $('#add').attr('id','newid');
   alertText = $('#add').attr('id'); 
   alert("The id is:" + alertText);
   }
</script>
</head>
<body>

<div id="questionArea">
  <div id="question0Container">
  <textarea id="question0" name="question0"></textarea><p>Answers</p>
  </div>
</div>

<a href="#" onClick="addQuestion();" id="add" title="Add a question">add question</a>

</body>
</html>

3 个答案:

答案 0 :(得分:1)

您正在更改ID,但您的选择器仍使用旧ID。所以,没有找到任何元素。 改变这个:

alertText = $('#add').attr('id');

到此:

alertText = $('#newid').attr('id');

答案 1 :(得分:1)

我认为您正在设置按钮的ID,而不是克隆的问题。

一旦克隆问题并将其写入DOM,您将有两个具有相同ID的问题,因此在您仍然引用ID时设置ID,如下所示:

$('#question0Container').clone().attr('id','newid').appendTo('#questionArea');

删除下一行

希望有所帮助

答案 2 :(得分:1)

您使用<a>$('#add').attr('id','newid');分配了新ID,因此选择器$('#add').attr('id');将不会返回任何内容。

我猜你想要为刚刚克隆的textarea分配一个id,在这种情况下你应该使用类似的东西:

   function addQuestion(){
      $newTextarea = $('#question0Container').clone().appendTo('#questionArea');
      $newTextarea.attr('id','newid');
      alert("The id of the new textarea is:" + $newTextarea.attr("id"));
   }