大家可直接复制我代码到php文件里面 测试一下! 意思就是: 我用js生成了一个html 文本框,id值是nam! 拿jquery获取不到这个id 但是我在本来页面也写了一个文本框,id值是ad, 拿同样的jquery 就能获取到! 这是为什么? 我用什么办法可以获取到这个id='nam' 的id?
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="../js/jquery-1.6.1.min.js"></script><body>
 <div id="d"></div>
<input type="button" id="b"  value="添加出库单" onClick="add()"/>
<input type="text" name="ad"  id="ad" /></body>
</html>
<script language="javascript">
//添加模块
var ii = 1;
function add(){//执行块添加
dv=document.createElement("div"); 
dv.id="div_"+ii;tab=document.createElement("div");
tab.innerHTML='<table bgcolor="#E6F3DE" ><tr><td>货物名称:</td><td colspan="2"><input type="text" id="nam" size="15" /></td></tr></table>'
dv.appendChild(tab);delbtn=document.createElement("input");
delbtn.type="button";
delbtn.value="删除该出库单";
delbtn.onclick=del;dv.appendChild(delbtn);document.getElementById("d").appendChild(dv);ii = ii + 1;
}
//删除添加的块
function del(){ document.getElementById("d").removeChild(this.parentNode);
 ii=ii-1;}//获取 js 添加的框的id,获取不到
$(function(){
$("#nam").bind("blur",function()
{
alert('msg');
})
})//获取原本的input的id  可以获取到!
$(function(){
$("#ad").bind("blur",function()
{
alert('msg');
})
})</script>

解决方案 »

  1.   

    但是我看你的代码不是这样的
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="../js/jquery-1.6.1.min.js"></script><body>
     <div id="d"></div>
    <input type="button" id="b"  value="添加出库单" onClick="add()"/>
    <input type="text" name="ad"  id="ad" /></body>
    </html>
    <script language="javascript">
    //添加模块
    var ii = 1;
    function add(){//执行块添加
    dv=document.createElement("div"); 
    dv.id="div_"+ii;tab=document.createElement("div");
    tab.innerHTML='<table bgcolor="#E6F3DE" ><tr><td>货物名称:</td><td colspan="2"><input type="text" id="nam" size="15" /></td></tr></table>'
    dv.appendChild(tab);delbtn=document.createElement("input");
    delbtn.type="button";
    delbtn.value="删除该出库单";
    delbtn.onclick=del;dv.appendChild(delbtn);document.getElementById("d").appendChild(dv);ii = ii + 1;$("#nam").bind("blur",function()
            {        
            alert('msg');
            })}
    //删除添加的块
    function del(){ document.getElementById("d").removeChild(this.parentNode);
     ii=ii-1;}//获取 js 添加的框的id,获取不到
    $(function(){
        
    })//获取原本的input的id  可以获取到!
    $(function(){
        $("#ad").bind("blur",function()
            {        
            alert('msg');
            })
    })</script>
      

  2.   

    额,不知道为什么,
    $("#nam").bind("blur",function()
      {  
      alert('msg');
      })是在下面的
    //获取 js 添加的框的id,获取不到
    $(function(){
       
    })里的!
      

  3.   

    $(function(){
      $("#nam").live("blur",function()
      {   
      alert('msg');
      })})
      

  4.   

    嗯 用这个live也是可以的 
    你把放到下面 不是 add()这个函数执行后执行的
      

  5.   

    这代码里add函数没执行当然没有那个元素了function add(){//执行块添加
    dv=document.createElement("div"); 
    dv.id="div_"+ii;tab=document.createElement("div");
    tab.innerHTML='<table bgcolor="#E6F3DE" ><tr><td>货物名称:</td><td colspan="2"><input type="text" id="nam" size="15" /></td></tr></table>'
    dv.appendChild(tab);delbtn=document.createElement("input");
    delbtn.type="button";
    delbtn.value="删除该出库单";
    delbtn.onclick=del;dv.appendChild(delbtn);document.getElementById("d").appendChild(dv);ii = ii + 1;
    }
    add();
      

  6.   

    能帮我解释一下  bind 和 live 的区别吗?谢谢了
      

  7.   

    bind的话就是只对你当时执行到这段代码的时候 页面中的HTML元素中的ID是nam的那个标签才有效
    live的话是无论什么时候只要有这个ID的标签,执行过这个方法后,就默认以后的所有的ID为这个的标签都有了这个事件
    不知道这样说你明白不,
      

  8.   

    楼主我回你另一帖了。看到没。
    是由于你JQ取时还没有激发onClick="add()" 这个行为。所以那时候根本还没有创建NAM这个对象。当然取不到。
      

  9.   

    bind 就是普通的绑定
    live 不论里面的元素怎么添加修改都能捕获到
    想了解详细点 百度下 事件委派 等相关吧