首页 > 代码库 > 巧妙使用Jquery 改变元素的 onclick 事件

巧妙使用Jquery 改变元素的 onclick 事件

需要点击图片将套组发布, 页面代码:

 

Html代码  收藏代码
  1. <img width="20px" src="  
  2. <s:property value="IMAGES_PATH" /><s:if test=‘%{releaseStatus == "YES"}‘>pubed.png</s:if>  
  3. <s:else>nopub.png</s:else>"   
  4. onclick="<s:if test=‘%{releaseStatus == "YES"}‘>changeToClose(<s:property value="http://www.mamicode.com/suiteId/>, $(this));</s:if>  
  5. <s:else>changeToOpen(<s:property value="suiteId" />, $(this));</s:else>/>  

 

   在套组发布之后, 需要改变下次点击的事件调用的方法。

 

   使用:img.click( function () { changeToOpen(suitId, img); });

 

   结果:先执行img所定义的 onclick 事件定义的方法, 然后执行之前 onclick 所绑定的方法, 最后执行这次绑定的方法。

 

   找到解除绑定的代码:unbind(‘click‘)  

           img.unbind(‘click‘).click( function () { changeToOpen(suitId, img); });

 

 结果:先执行img所定义的 onclick 事件定义的方法, 然后执行这次绑定的方法。

 

 找到解除 onclick  绑定的代码: 

 

   img.attr(‘onclick‘, ‘‘).unbind(‘click‘).click( function () { changeToOpen(suitId, img); });

 

 

Js代码  收藏代码
  1. function changeToOpen(suitId, img){  
  2.     //这里借助 train_com ac_type 来实现传递锁信息  
  3.     params = "train_com="+suitId+"&ac_type=yes";//alert(params);  
  4.     $.post("doSimulatorPubById.do",params,function(data){  
  5.         eval("var rst = "+data);  
  6.         alert(rst.msg);  
  7.         if(rst.status == 3){  
  8.             img.attr("src","<s:property value="http://www.mamicode.com/IMAGES_PATH" />pubed.png");  
  9.             img.attr(‘onclick‘‘‘).unbind(‘click‘).click( function () { changeToClose(suitId, img); });   
  10.         }  
  11.     });  
  12. }  
  13. function changeToClose(suitId, img){  
  14.     //这里借助 pilotInfForVoteDto 来实现传递锁信息  
  15.     params = "train_com="+suitId+"&ac_type=no";//alert(params);  
  16.     $.post("doSimulatorPubById.do",params,function(data){  
  17.         eval("var rst = "+data);  
  18.         alert(rst.msg);  
  19.         if(rst.status == 3){  
  20.             img.attr("src","<s:property value="http://www.mamicode.com/IMAGES_PATH" />nopub.png");  
  21.             img.attr(‘onclick‘‘‘).unbind(‘click‘).click( function () { changeToOpen(suitId, img); });   
  22.         }  
  23.     });  
  24. }