unbind后如何重新绑定click事件?

时间:2011-07-07 19:46:40

标签: jquery bind anchor unbind

我想在第一次点击后取消绑定锚点,但是当用户点击特定按钮时,我想将点击事件重新绑定到此锚点

我写了这段代码

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

unbind函数运行良好,但绑定函数不起作用,为什么?以及如何使它工作?

3 个答案:

答案 0 :(得分: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
  });    
});

答案 1 :(得分:0)

你必须将一个回调传递给bind,它一旦被解除绑定就不记得了。在#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/

答案 2 :(得分: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>);
    });