2011-07-07 64 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 
    });  
});