jquary 中的live函数在firebug中提示不是一个函数的问题

jquery1.4使用.live(),1.7以后开始使用.on()。 
两者的区别: 
$('#count').live('click', function() { 
          //function code here. 
        }); 
$('#Grid1Table').on('click', '#count', function() { 
          //function code here. 
        }); 
这里很关键的一点是:#Grid1Table是#count的父节点以上的节点 

 

代码:

  1. <style type="text/css">  
  2. .border {  
  3.     background:#CDCDCD;  
  4. }  
  5. .tbl_detail_title {  
  6.     background-color: #EBEBEB;  
  7.     font-weight: bold;  
  8. }  
  9. .box_table a {  
  10.     color:#4A8109;  
  11. }  
  12. .box_table tr{  
  13.     background-color:expression((this.sectionRowIndex%2==0)?"#F9F9D3":"#FFFEEA");  
  14. }  
  15. .box_table td {  
  16.     line-height:20px;  
  17. }  
  18. .a_span{  
  19.     color : #4A8109;  
  20.     font-size: 12px;  
  21.     text-decoration: none;  
  22.     text-decoration: underline;  
  23.     cursor: HAND;  
  24. }  
  25. .white{  
  26.   height:20px;  
  27. }  
  28. </style>  
  29. <script type="text/javascript" src="jquery-1.2.6.min.js"></script>  
  30. <script type="text/javascript">  
  31.   
  32.   $(document).ready(function(){  
  33.       
  34.     //全局变量index,只增  
  35.     var lastIndex=0;  
  36.       
  37.     //增  
  38.     $("#add_button").click(function(){  
  39.                              
  40.       var txt1=$('#txt1').val();  
  41.       var txt2=$('#txt2').val();  
  42.       var txt3=$('#txt3').val();  
  43.       var str='<tr class="white"><td align="center"><input type="checkbox" name="cbx" class="ch" ></td>'+  
  44.               '<td class="td2" align="center"></td>'+  
  45.               '<td align="center"><input type="hidden" class="v1" name="bookList['+lastIndex+'].id" value="'+txt1+'"/>'+txt1+'</td>'+  
  46.               '<td align="center"><input type="hidden" class="v1" name="bookList['+lastIndex+'].name" value="'+txt2+ '"/>'+txt2+'</td>'+  
  47.               '<td align="center"><input type="text" class="v1" name="bookList['+lastIndex+'].price" value="'+txt3+ '"/>'+txt3+'</td></tr>';  
  48.       //alert(str);  
  49.       $("#pdTB_body").append(str);  
  50.       setItemIndex();  
  51.       clearText();  
  52.       lastIndex++;  
  53.       });  
  54.     //查看HTML   
  55.     $("#btnSubmit").click(function(){  
  56.         alert($("#pdTB_body").html());  
  57.     });  
  58.     //删   
  59.     $("#del_button").click(function(){  
  60.       
  61.         $("#pdTB_body").find(".ch").each(function(){  
  62.             if($(this).attr("checked")==true){  
  63.             $(this).parent().parent().remove();}});  
  64.               
  65.         setItemIndex();  
  66.     });  
  67.     //改  
  68.      $("#mod_button").click(function(){  
  69.        
  70.         if($("input[name='cbx'][checked]").length>1){  
  71.           alert($("input[name='cbx'][checked]").length+"! choose one");  
  72.           return;  
  73.         };  
  74.               
  75.        $("#pdTB_body").find(".ch").each(function(){  
  76.                 if($(this).attr("checked")==true){  
  77.                      var txt="#txt";  
  78.                      var txtIndex=1;  
  79.                      $(this).parent().parent().find(".v1").each(function(){  
  80.                          $(txt+txtIndex).val($(this).val());  
  81.                          txtIndex+=1;  
  82.                         });  
  83.                      $(this).parent().parent().remove();      
  84.                         }  
  85.                     });  
  86.              
  87.           setItemIndex();  
  88.                   
  89.       });  
  90.         
  91.       //设置序号  
  92.       function setItemIndex(){  
  93.        var index=1;  
  94.        $("#pdTB_body").find(".td2").each(function(){  
  95.             $(this).html(index);  
  96.             index+=1;  
  97.             });  
  98.       }  
  99.         
  100.       //清空  
  101.       function clearText(){  
  102.          $('#txt1').val("");  
  103.          $('#txt2').val("");  
  104.          $('#txt3').val("");  
  105.       }  
  106.         
  107.      //全选、取消  
  108.      $("#cbx_link").click(function(){  
  109.        var cbxAll=$("input[name='cbx']").length;  
  110.        var cbxChecked=$("input[name='cbx'][checked]").length;  
  111.        if(cbxChecked < cbxAll)  
  112.          $("input[name='cbx']").attr("checked",true);  
  113.        else  
  114.          $("input[name='cbx']").attr("checked",false);  
  115.      });  
  116.       
  117.     });  
  118. </script>  
  119.   
  120.   
  121. <div style="width:50%">  
  122.   <fieldset>  
  123.     <table>  
  124.       <tr>  
  125.         <td>编号:</td><td><input type="text" id="txt1" style="width:100px"/></td>  
  126.         <td>名称:</td><td><input type="text" id="txt2" style="width:100px"/></td>  
  127.         <td>价格:</td><td><input type="text" id="txt3" style="width:100px"/></td>  
  128.       </tr>  
  129.       <tr>  
  130.         <td colspan="6"><input type="button" value="add"    id="add_button" class="btnShort"/>  
  131.                         <input type="button" value="delete" id="del_button" class="btnShort"/>  
  132.                         <input type="button" value="modify" id="mod_button" class="btnShort"/></td>  
  133.       </tr>  
  134.     </table>  
  135.       
  136.     <table border="0" cellpadding="0" cellspacing="0" class="border" style="width:100%;">  
  137.      <tr>  
  138.       <td>  
  139.             <table id="pdTB" width="100%" border="0" cellpadding="1" cellspacing="1" class="box_table word_break">  
  140.                     <tbody id="pdTB_body">  
  141.                         <tr class="white">  
  142.                         <td><div align="center" class="tbl_detail_title"><span id="cbx_link" class="a_span">全选</span></td>  
  143.                         <td><div align="center" class="tbl_detail_title">项次</td>  
  144.                         <td><div align="center" class="tbl_detail_title">编号</td>  
  145.                         <td><div align="center" class="tbl_detail_title">名称</td>  
  146.                         <td><div align="center" class="tbl_detail_title">价格</td>  
  147.                         </tr>  
  148.                           
  149.                     </tbody>  
  150.                 </table>  
  151.         </td>  
  152.       </tr>  
  153.      </table>  
  154.     
  155.   </fieldset>  
  156. </div>  
  157.   
  158. <input type="button" value="查看innerHTML" id="btnSubmit" class="btnShort"/>  

这里借用了一位朋友的代码。

 

jquery中的on和live(以及delegate)效果是不同的 
live以及delegate对于以后创建的dom节点依然有效,on就指定到当前节点了 
当然,使用live和delegate的选择器有很大特点,就是它支持新增加的dom节点,也就是可能是多个,如果使用$('#id'),就看不出有代理方式有什么方式了

 

原本 

Js代码  收藏代码
  1. $('#count').live('click'function() {   
  2.   //function code here.   
  3. });   


可以直接替换成 

Js代码  收藏代码
  1. $('#count').on('click'function() {   
  2.   //function code here.   
  3. });   


的,但是on多了个条件,就是$('#count')必须是当前存在的! 

如果$('#count')当前不存在,比如是动态生成的,那么就需要用代理的模式走,就变成 

$(父节点).on("事件","动态生成子节点",handler) 

这样了。 

但对于当前存在的,就没必要这么搞了。 

posted @ 2013-11-19 11:27  yhlin  阅读(185)  评论(0)    收藏  举报