我有一个有4个选项的菜单,在我点击某个选项之后会有一个约1.5秒的动画,所以在那段时间我想能够使菜单中的其他链接无法点击(但不使用.on of off方法)并在1.5秒之后使菜单中的所有链接再次可点击
$("#Link3").click(function(){
$('#LinkDiv31').fadeOut(300);
$('#ImageBingingDiv').fadeOut(300);
$("#Link1").off("click");
$("#Link2").off("click");
$("#Link4").off("click");
}
答案 0 :(得分:1)
$("#Link2").on('click', link2);
$("#Link3").on('click', link3);
function link2() {
// do stuff for #Link2
}
function link3() {
$('#LinkDiv31').fadeOut(300);
$('#ImageBingingDiv').fadeOut(300);
$("#Link1, #Link2, #Link4").off("click");
setTimeout(function() {
$("#Link1").on("click", link1);
$("#Link2").on("click", link2);
$("#Link4").on("click", link4);
}, 1500);
}
答案 1 :(得分:0)
var clickEnabled = true;
$( "#Link2" ).on( 'click' , clickFunc );
function clickFunc() {
if ( clickEnabled ) {
clickEnabled = false;
// do your code
setTimeout( function() { clickEnabled = true } , 1000 );
// or you can use callback in fadeOut
$( '#someDiv' ).fadeOut( 300 , function() { clickEnabled = true } );
}
}
答案 2 :(得分:0)
您要解决两个问题:
1)在动画完成后执行一些事件:你可以使用jQuery提供的队列和出列方法来实现这一点。
2)禁用链接:您可以使用模态叠加来实现此目的。
请参阅我在jsFiddle创建的示例:
http://jsfiddle.net/kamatanay/qyDDB/1/
它使用easyModal库。
HTML:
<a id="Link1" href="#">Link1</a>
<a id="Link2" href="#">Link2</a>
<a id="Link3" href="#">Link3</a>
<a id="Link4" href="#">Link4</a>
<div class="modal"></div>
<div id="LinkDiv31">This is LinkDiv31</div>
<div id="ImageBingingDiv">This is ImageBingingDiv</div>
使用Javascript:
$(".modal").easyModal({
overlayOpacity: 0.0,
overlayColor: "#FFFF",
overlayClose: false,
closeOnEscape: false
});
$("#Link3").click(function(){
$(".modal").trigger('openModal');
$('#LinkDiv31').fadeOut(300);
$('#ImageBingingDiv').fadeOut(300);
$("#ImageBingingDiv").queue(function(){
$(".modal").trigger('closeModal');
$("#ImageBingingDiv").dequeue();
});
});
我希望这有助于解决您的问题。