下面这段代码点击一辆,二两。。都会在客户端生成新的 select元素和radio按钮,我想在新生成的 radio按钮上注册事件,点击该按钮后获得按钮的id.
我注册事件的代码:$(html>"input:eq(1)").click(function (){alert(this.id);});
但是点击每个radio按钮得到的 id 都是一样的。求解,怎么实现,谢谢!!
html代码<table width="750" border="0" align="center" cellpadding="0" cellspacing="0" class="div_con">
            <tr>
              <td id="input"><span class="f_red">*</span> 是否有车:
                <input type="radio" name="radiobut" value="radiobutton" />
                有
                <input type="radio" name="radiobut" value="radiobutton" />
                无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 您有
                <input type="radio" id="radio1" name="radiobutton" value="1"   checked="checked"  onclick="add(this)" />
                一辆
                <input type="radio" id="radio2" name="radiobutton" value="2" onclick="add(this)" />
                二辆
                <input type="radio" id="radio3" name="radiobutton" value="3" onclick="add(this)"/>
                三辆
                <input type="radio" id="radio4" name="radiobutton" value="4" onclick="add(this)" />
                四辆
                <input type="radio" id="radio5" name="radiobutton" value="5" onclick="add(this)" />
                五辆</td>
            </tr>

            <tr>
              <td id="xiandai1" valign="middle" style="height:40px">
              <div >
              <input  id="rada0" name="rad0" type="radio" checked="checked "  /> 国产 
                  <input id="radb0" name="rad0" type="radio"/>  进口 
                  <span class="f_red">*</span> 品牌:                
                    <select name="select4" style="width:120px;">
                      <option value="高尔夫">X:现代</option>
                      <option value="沃尔沃">X:沃尔沃</option>
                      <option value="本田">X:本田</option>
                      <option value="奔驰">X:奔驰</option>
                    </select>
                    &nbsp;车系:
                    <select name="select5" style="width:120px;">
                      <option value="高尔夫">X:现代</option>
                    </select>
                    &nbsp; 车型:                
                    <select name="select6" style="width:220px;">
                      <option value="高尔夫">X:现代</option>
                    </select><br /></div>
                    
               </td>
            </tr>
            <tr>
              <td valign="middle" style="height:60px"><div align="center"><img src="images/button_2.jpg" width="107" height="25" /></div></td>
            </tr>
          </table>
jquery代码: $(function (){  
     
    $("#input>input:gt(1)").click(function(){
     
        var n=this.value;    
        var html=$('#xiandai1>div:eq(0)').clone();
        $("#xiandai1").empty();
        for(var i=0;i<n;i++)
        {   
            $("#xiandai1").append(html); 
            //改变rad的name属性
            $(html>"input:eq(0)").attr({name:"rad"+i}); 
            $(html>"input:eq(1)").attr({name:"rad"+i});
            
            
            $(html>"input:eq(0)").attr({id:"rada"+i});
            $(html>"input:eq(1)").attr({id:"radb"+i});           
            //alert($(html>'input:eq(1)').attr('id'));
            
           $(html>"input:eq(1)").click(function (){alert(this.id);});
     
             //改变select 的name属性
            $(html>"select:eq(0)").attr({name:"scb"+i});
            $(html>"select:eq(1)").attr({name:"scs"+i});
            $(html>"select:eq(2)").attr({name:"scm"+i});
            var html=$('#xiandai1>div:eq('+i+')').clone();
            //alert(html[0]);
    
            
        }   
   
           
    });
 
  
         
    });

解决方案 »

  1.   

    $(html>"input:eq(1)").click(function (){alert(this.id);});
    改成
    $(html>"input:radio").each(function(){    $(this).attr('id');});
    试试
      

  2.   

    $(":radio").click(function () {
         alert(this.id + "-" + $(this).attr("id"));
    });
      

  3.   

    这样不能触发按钮的点击事件吧??
    我要的是 div 里的“国产”或“进口”的radio按钮被点击后触发事件,不同的按钮触发该事件能得到该按钮的的id
      

  4.   

    貌似这是一个需要闭包来解决的问题吧,楼主得到的id中的所代表的序号的i是不是最大的那一个?楼主可参考下Javascript Good Parts中的Closure部分。现在是一个使用例子:var add_the_handlers = function (nodes) {
        var i;
        for (i = 0; i < nodes.length; i += 1) {
            nodes[i].onclick = function (i) {
                return function (e) {
                    alert(i);
                };
            }(i);
        }
    };
      

  5.   


    $(function(){
    $.each($('#input input[type=radio]'),function(index,el){
    $(this).click(function(){
    if(index > 1){
    var idObj = $(this).attr('id');
    var valueObj = el.value;
    alert(idObj);
    alert(valueObj);
    }
    });
    });
    });
      

  6.   

    解决了,是for 循环了克隆和改变id属性的逻辑出了问题。
    谢谢大家
      

  7.   

    $(document).ready(function(){
      $('input[type=radio]').live('click',function(){
        //dosomething.....
      })
    })这样就为所有的单选按钮都绑定了一个click事件
      

  8.   

    for逻辑出现问题,还有就是事件重复注册了
    谢谢了