2011-07-07 131 views
2

我想拆散首次點擊後,錨,但是當用戶點擊一個特定的按鈕,我想click事件重新綁定到這個錨如何重新綁定綁定後的單擊事件?

我寫了這個代碼

$(document).ready(function(){ 
    $("a.package").click(function(){ 
     //alert('click');    
     $(this).unbind('click'); 
     // the rest of the code 
    }); 

    $('#activate').click(function(){ 
     $('a.package').bind('click'); 
     // the rest of the code 
    }); 
}); 

的解除綁定功能如何工作好吧,但綁定功能不起作用,爲什麼?以及如何使其工作?

+0

這可能是有益的:http://stackoverflow.com/questions/516265/jquery -unbind-event-handlers-to-bind-them-again-later – Kokos

+0

你可能想用jQuery的click來代替bind。 http://api.jquery.com/click/ – mrtsherman

回答

0

你必須傳遞一個回調來綁定,一旦它被解除綁定,它就不會記得任何東西。當您在#activate.click中再次指定綁定時,意味着您必須在那裏指定函數。可能最好的辦法是指定函數的地方,並將其用於綁定調用。 在下面的示例中,我使用jquerys .data在'clickFunc'下存儲函數,然後將其用作.click的回調函數。你也可以使用var。

$(document).ready(function(){ 
    $("#package").data('clickFunc', function() { 
     alert("Click"); 
     $(this).unbind('click'); 
    }) 
    console.log($('#package').oclick); 
    $("#package").click($('#package').data('clickFunc')); 

    $('#activate').click(function(){ 
     $("#package").click($('#package').data('clickFunc')); 
     // the rest of the code 
    }); 
}); 

http://jsfiddle.net/nj65w/13/

0

嘗試改變首先結合.one()

$("a.package").one("click", function(){ 
      // alert('click');    
      // $(this).unbind('click'); <-- no need, using .one 
      // call your "when clicked" function 
     }); 
$('#activate').click(function(){ 
     $('a.package').click(<your "when clicked" function>); 
    }); 
+0

所有我想要的是重新綁定點擊事件的錨點,以便用戶可以再次點擊它。這隻能在用戶點擊激活按鈕時發生 – sahar

4

存儲在一個變量,以便它可以很容易地重新分配你的點擊功能...

$(document).ready(function() { 
    var onclick = function(e) { 
    //alert('click');    
    $(this).unbind('click'); 
    // the rest of the code 
    } 

    $("a.package").click(onclick); 

    $('#activate').click(function() { 
    $('a.package').click(onclick); 
    // the rest of the code 
    });  
}); 
相關問題