jQuery,试图保存点击事件,取消绑定和重新绑定,无法重新绑定

时间:2013-02-26 16:18:29

标签: jquery

我试图取消绑定并重新绑定点击事件。我想“保存”click事件,取消绑定它,并用条件语句重新绑定它。

我可以使用以下信息保存点击处理程序:jQuery find events handlers registered with an object

我使用的是旧版本的jQuery(1.5),所以我正在使用数据(“events”)方法。

到目前为止......

var events = $('#myElement').data("events");

alert(events.click[0].handler);

$('#myElement').unbind('click');

现在它会提醒我处理程序功能,它看起来是正确的。我想添加内容,但我想初学者我会尝试重新绑定相同的点击事件。但是,我不确定如何正确重新绑定。我尝试过的事情:

$('#myElement').bind('click', null, events.click[0].handler); // gives 'click.0 is null or not an object

$('#myElement').bind('click', events.click[0].handler); // gives 'click.0 is null or not an object

$('#myElement').bind('click', null, events.click); // seems to have no effect

$('#myElement').bind('click', events.click); // seems to have no effect

所以我觉得我几乎拥有它,但我不知道该怎么做。如何使用events变量重新绑定click事件?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以在jQuery中使用.die()方法(在1.4.1中添加)。 任何使用.dive()附加的处理程序都可以使用.die()。

删除

参考.die():http://api.jquery.com/die/
参考.live():http://api.jquery.com/live/

HTML

<div id="myElement">Testing save event</div>

的JavaScript

<script type="text/javascript">
    $(document).ready(function() {


     function ClickEventHandler()
     {
        alert('abc');
     }

     $('#myElement').live('click', ClickEventHandler);


     function GetClickEventHandler(selector)
     {
        for(var i = 0 ; i < $._data(document).events.live.length ; i++)
        {
            if( $._data(document).events.live[i].selector == selector )
            {
                return $._data(document).events.live[i].handler;
            }
        }   
        return null;
     }

     var myFn = GetClickEventHandler('#myElement');

     $('#myElement').die();


     $('#myElement').live('click', myFn );
    });
</script>

要查看代码是否真的有用,您可以尝试注释$('#myElement').live('click', myFn );并单击该元素,它不应该提醒。然后启用它,它会发出警报。

添加了jsfiddle示例:
一个被注释掉:http://jsfiddle.net/9wbPH/1/
一个是实际工作:http://jsfiddle.net/9wbPH