我正在尝试使用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>
答案 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"));
}