首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除jquery中的unbind属性

删除jquery中的unbind属性
EN

Stack Overflow用户
提问于 2012-03-29 17:57:16
回答 3查看 3.8K关注 0票数 3

我使用unbind方法关闭了图片的click事件。但是我不知道如何再次恢复点击事件。这是代码,

<img src="testimg.jpg" id="sub_form">

已使用代码禁用上图的点击事件

代码语言:javascript
复制
$('#sub_form').unbind('click');

如何恢复点击事件?我尝试使用绑定事件

代码语言:javascript
复制
  $('#sub_form').bind('click');

但这行不通。

为什么我要去点击图像事件是ajax表单提交。代码是,

代码语言:javascript
复制
$("#sub_form").click(function() {
var input_data = $('#testform').serialize();
    $.ajax({ 
//my code
});
});

如何在解绑镜像后实现此目的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-29 18:00:36

如果您保存了处理程序,则可以再次调用它:

代码语言:javascript
复制
var handler = function() {
    alert('click');
};

$('#sub_form').click(handler);

// disabling:
$('#sub_form').unbind('click', handler);

// reenabling:
$('#sub_form').click(handler);

如果您不知道绑定了哪些处理程序,可以在解绑之前找到并保存它们:

代码语言:javascript
复制
// save the click handlers
var events = $('#sub_form').data('events'),
    handlers = 'click' in events ? Array.prototype.slice.call(events.click) : [],
    handler = function() {
        $.each(handlers, function() {
            this.handler();
        });
    };

// disable
$('#sub_form').unbind('click');

// reenable
$('#sub_form').bind('click', handler);​

http://jsfiddle.net/sPPnE/

票数 4
EN

Stack Overflow用户

发布于 2012-03-29 18:01:18

您可以在调用.unbind()时指定function reference

例如:

代码语言:javascript
复制
function myHandler( event ) {
}

// bind the click handler
$('#sub_form').bind('click', myHandler);

// remove only this exact click handler
$('#sub_form').unbind('click', myHandler);

// bind it again
$('#sub_form').bind('click', myHandler);

Sidenote:对于jQuery 1.7.x,您应该使用.on().off()等效方法。

参考:.on().off().bind().unbind()

票数 1
EN

Stack Overflow用户

发布于 2012-03-29 17:58:46

您需要为事件处理程序提供一个在事件发生时运行的函数,请尝试执行以下操作:

代码语言:javascript
复制
$('#sub_form').bind('click', function() {
    alert("You clicked #sub_form");
});

如果你要定期绑定/解绑,最好将逻辑放到它自己的函数中,这样它就可以很容易地被重新绑定:

代码语言:javascript
复制
$("#element").click(function() {
    $("#sub_form").unbind();

    // do something

    $("#sub_form").bind('click', myFunc);
});

function myFunc() {
    alert("You clicked #sub_form");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9923062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档