当我运行以下代码时,我只希望#overlay,#image + theNumber和#close处于活动状态,因此我禁用$('。box')。单击但是一旦#close被点击我想要重新启用$('。box')的点击,但我无法到目前为止。我检查了其他答案,但无法将它们放在一起。谢谢你的帮助!!
var handler = function() { var theIDval = $(this).attr('id'); var theNumber = theIDval.replace('box',''); $('.box').unbind('click'); $('#overlay').show(); $('#image' + theNumber).fadeIn(); $('#close').fadeIn(); $('#close').click( function () { $('#overlay').fadeOut(); $('#image' + theNumber).fadeOut(); $('#close').fadeOut(); }); }; $(document).ready( function() { $('.box').click(handler); });
答案 0 :(得分:2)
看起来你所缺少的是重新绑定.box
点击处理函数中的#close
点击事件
$('#close').click(function() {
$('#overlay').fadeOut();
$('#image' + theNumber).fadeOut();
$('#close').fadeOut();
$('.box').click(handler);
});
答案 1 :(得分:1)
如果我是你,我会这样做:
var handler = function() {
var $box = $('.box');
if($box.hasClass('disabled')){
// do nothing, just disallow further spawns
} else{
$box.addClass('disabled');
var theIDval = $(this).attr('id');
var theNumber = theIDval.replace('box','');
// no need to unbind, remove this
// $('.box').unbind('click');
$('#overlay').show();
$('#image' + theNumber).fadeIn();
$('#close').fadeIn();
$('#close').click( function () {
$('#overlay').fadeOut();
$('#image' + theNumber).fadeOut();
$('#close').fadeOut();
$box.removeClass('disabled'); // re-enable click
});
}
};
$(document).ready( function() {
$('.box').click(handler);
});