巧妙使用Jquery 改变元素的 onclick 事件
需要点击图片将套组发布, 页面代码:
- <img width="20px" src="
- <s:property value="IMAGES_PATH" /><s:if test='%{releaseStatus == "YES"}'>pubed.png</s:if>
- <s:else>nopub.png</s:else>"
- onclick="<s:if test='%{releaseStatus == "YES"}'>changeToClose(<s:property value="suiteId" />, $(this));</s:if>
- <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); });
- function changeToOpen(suitId, img){
- //这里借助 train_com ac_type 来实现传递锁信息
- params = "train_com="+suitId+"&ac_type=yes";//alert(params);
- $.post("doSimulatorPubById.do",params,function(data){
- eval("var rst = "+data);
- alert(rst.msg);
- if(rst.status == 3){
- img.attr("src","<s:property value="IMAGES_PATH" />pubed.png");
- img.attr('onclick', '').unbind('click').click( function () { changeToClose(suitId, img); });
- }
- });
- }
- function changeToClose(suitId, img){
- //这里借助 pilotInfForVoteDto 来实现传递锁信息
- params = "train_com="+suitId+"&ac_type=no";//alert(params);
- $.post("doSimulatorPubById.do",params,function(data){
- eval("var rst = "+data);
- alert(rst.msg);
- if(rst.status == 3){
- img.attr("src","<s:property value="IMAGES_PATH" />nopub.png");
- img.attr('onclick', '').unbind('click').click( function () { changeToOpen(suitId, img); });
- }
- });
- }