我使用unbind方法禁用了图像的click事件。但我不知道如何再次恢复点击事件。 这是代码,
<img src="testimg.jpg" id="sub_form">
使用代码
禁用上面图片的点击事件$('#sub_form').unbind('click');
如何恢复点击事件?我尝试了绑定事件
$('#sub_form').bind('click');
但它无法正常工作。
为什么我要点击图片的点击事件是ajax表单提交。代码是,
$("#sub_form").click(function() {
var input_data = $('#testform').serialize();
$.ajax({
//my code
});
});
如何在执行图像解除绑定后实现此目的。
答案 0 :(得分:4)
如果保存了处理程序,则可以再次调用它:
var handler = function() {
alert('click');
};
$('#sub_form').click(handler);
// disabling:
$('#sub_form').unbind('click', handler);
// reenabling:
$('#sub_form').click(handler);
如果您不知道绑定的处理程序,您可以在解除绑定之前找到并保存它们:
// 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);
答案 1 :(得分:0)
您需要为事件处理程序提供在事件发生时运行的函数,请尝试:
$('#sub_form').bind('click', function() {
alert("You clicked #sub_form");
});
如果您要定期绑定/取消绑定,最好将逻辑放入其自身的功能中,以便它可以轻松反弹:
$("#element").click(function() {
$("#sub_form").unbind();
// do something
$("#sub_form").bind('click', myFunc);
});
function myFunc() {
alert("You clicked #sub_form");
}
答案 2 :(得分:0)
您可以在致电function reference
时指定.unbind()
:
例如:
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()
等效方法。