如何在jQuery中分离事件并附加新事件

时间:2012-05-16 13:24:43

标签: jquery

我在彩盒弹出窗口内的按钮上遇到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

1 个答案:

答案 0 :(得分:2)

在您的代码中,没有标识为popup的元素。所以jQuery('#popup')将不会做任何事情(或者您没有向我们展示代码的重要部分)。

<强>更新

您需要使用.unbind()而不是删除类

$('#popup .close_bu').unbind('click');

'#popup .close_bu'您只需选择要与事件相关联的元素,或者在此情况下从事件中取消连接。 jQuery css选择器看起来像css。事件和处理程序之间的连接不使用css。 添加和删​​除类的全部技巧是触发不同的css样式,它只会改变元素的外观,但不会改变事件。