如何在列表上停止onclick事件1.5秒

时间:2013-11-30 17:50:35

标签: jquery

我有一个有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");





}

3 个答案:

答案 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();        
    });    

});

我希望这有助于解决您的问题。