2013-02-12 126 views
2

我有圖像。當圖像被點擊時,我會顯示一些動畫的數據。所以我想要做的就是禁用圖像到瀏覽器中顯示的數據。然後一旦數據加載,我需要啓用圖像。啓用並禁用使用Jquery的圖像的點擊事件?

例如

$("#imageid").click(function(e){ 
//disable the click 
$("idforanim").animate({left : "-=50 "px"},500,function(){callfunction1();}) 
}) 

callfunction1(){ 
//show the data 
//enable the click 
} 

我怎樣才能做到這一點?

回答

5

另一種方法是設置一個標誌,表明數據仍在處理並取消設置標誌上完成:通過利用的事實,即animate需要一個功能

var processing = false; 

$("#imageid").click(function(e){ 
    if (!processing) 
    { 
     //disable the click 
     processing = true; 
     $("idforanim").animate({left : "-=50px"},500,function(){callfunction1();}) 
    } 
}) 

callfunction1(){ 
    //show the data 
    //enable the click 
    processing = false; 
} 
+0

當你說按鈕,你的意思是被點擊的圖像?或者你還有一個單獨的按鈕? – philreed 2013-02-12 22:15:28

+0

..工作很好:)感謝您的幫助.... – svk 2013-02-12 22:19:57

1

你可以這樣做要求完成動畫。例如:

http://jsbin.com/adokiz/2

我們做的是這樣的:

$(document).ready(function() { 
    var running = false; 
    $('img').on('click', function(event) { 
     if (running) return; 

     running = true; 
     console.log(this); 
     $(this).animate({top: '400px'}, function() { 
     $(this).css({top: 0}); 
     running = false; 
     }); 
    }); 
}); 

使用命名的全局變量running可以防止多次點擊來自在同一時間被認可。這與您的代碼不完全相同,但您可以輕鬆調整它。

另一種方式來做到這一點應該是甚至被執行兩次更耐是使用jQuery one結合它像這樣:

$(document).ready(function() { 
    var animation; 

    var binding = function() { 
    $('img').one('click', animation); 
    }; 

    animation = function(event) { 
    $(event.target).animate({top: '400px'}, function() { 
     $(event.target).css({top: 0}); 
     binding(); 
    }); 
    }; 

    binding(); 
}); 

演示:http://jsbin.com/adokiz/3

+0

我試過了。但它沒有工作的方式,我expect.If我慢點擊它工作正常。但如果我在做同樣的事情不斷工作,它沒有工作。 – svk 2013-02-12 22:05:45

+0

你的意思是連續點擊或者什麼?缺乏「沒有工作」部分的細節:)。 – Cymen 2013-02-12 22:07:33

+0

對不起,我犯了一個錯誤,從我身邊.anyway同樣的想法上面,所以我接受因爲發佈早些時候的答案... :)繼續幫助... – svk 2013-02-12 22:10:05

0

使用unbind方法:

var clickHandle = function(){ 
    $(this).unbind('click', clickHandle); 
    callfunc(); 
}; 
var callfunc = function(){ 
    // do your stuff 
    $('#imageid').click(clickHandle);// reinstall click handle 
}; 
$('#imageid').click(clickHandle);