我在彩盒弹出窗口内的按钮上遇到jQuery点击事件的问题。
按钮如下:
<div id="popup">
<button class="close_bu">Close</button>
</div>
默认情况下附加了以下事件:
jQuery('.close_bu').bind('click',function(){
jQuery.colorbox.close();
});
当我发起另一个事件时,我想更改默认行为,所以我执行以下操作:
jQuery('#anotherpopup').on('click','.deleteplan_button',function(){
jQuery('#popup .close_bu').addClass('returnBack');
jQuery('#popup .returnBack').removeClass('close_bu');
jQuery.colorbox({inline:true , href:"#popup", opacity: 0.6, width: "600px"});
return false;
})
我添加了:
jQuery('#popup').on('click','.returnBack',function(){
e.preventDefault();
//Do something
})
但附加到.returnBack的新事件不起作用,当我点击按钮触发关闭事件时,按钮不再具有.close_bu类并不重要,它会继续触发该事件。
我有点困惑:S答案 0 :(得分:2)
在您的代码中,没有标识为popup
的元素。所以jQuery('#popup')
将不会做任何事情(或者您没有向我们展示代码的重要部分)。
<强>更新强>
您需要使用.unbind()而不是删除类
$('#popup .close_bu').unbind('click');
'#popup .close_bu'
您只需选择要与事件相关联的元素,或者在此情况下从事件中取消连接。 jQuery css选择器看起来像css。事件和处理程序之间的连接不使用css。
添加和删除类的全部技巧是触发不同的css样式,它只会改变元素的外观,但不会改变事件。