识别动态生成的元素

时间:2010-03-28 12:33:31

标签: jquery jquery-selectors javascript

在以下代码中,

<script>
 function val()
 {
    //get alltextarea to validate
  }
$(document).ready(function() {
var html= '<form>'
html += '<textarea name="test" id="test"';
    html += '<textarea name="test1" id="test1"';
html += 'form';

$('#get_div').append();
 });

 </script>

<div id= "get_div"></div> 
<input type="button" onclick="val();"

这两个textareas是动态生成的。现在如何在函数val中验证它。当我执行$('#test')。val()或document.getElementbyId(test).value我找不到的值文本域

谢谢..

2 个答案:

答案 0 :(得分:3)

您没有生成有效的HTML,但存在一些问题:

  • <textarea>元素未关闭。
  • <form>元素未关闭
  • onclick没有正确装配(无论如何都是通过jQuery完成的)

这是一个更正版本,其中包含有效的更改:

jQuery的:

$(document).ready(function() {
var html= '<form>'
    html += '<textarea name="test" id="test"></textarea>';
    html += '<textarea name="test1" id="test1"></textarea>';
    html += '</form>';
  $('#get_div').append(html);
  $("input").click(function() {
    alert($('#test').val());        
  });
});​

HTML:

<div id= "get_div"></div> 
<input type="button" Value="TestBtn"​ />​​​​​​​​​​​​​​

See a demo here

答案 1 :(得分:1)

您无法区分动态创建的元素与普通标记元素之间的差异。我建议你做的是使用标记类:

$(function() {
  $("textarea").addClass("static");
  ...
});

动态创建没有静态类的文本区域。这当然是一个合作计划,因为没有什么可以阻止你用静态类创建动态标记,但是,就像我说的那样,你无法做任何事情。