как привязать событие клика к якору после отмены - PullRequest
2 голосов
/ 07 июля 2011

Я хочу открепить привязку после первого щелчка, но когда пользователь нажимает определенную кнопку, я хочу повторно привязать событие щелчка к этой привязке

Я написал этот код

 $(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 работает хорошо, но функция bind не работает, почему? и как заставить это работать?

Ответы [ 3 ]

4 голосов
/ 08 июля 2011

Сохраните функцию щелчка в переменной, чтобы ее можно было легко переназначить ...

$(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
  });    
});
0 голосов
/ 08 июля 2011

Попробуйте изменить первую привязку на .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 голосов
/ 08 июля 2011

Вы должны передать обратный вызов, чтобы связать, он ничего не помнит, как только он не связан.То есть, когда вы снова указали привязку в # activ.click, вам нужно будет указать функцию там.Вероятно, лучший способ сделать это - указать функцию else где и использовать ее для вызова bind.В приведенном ниже примере я использую jquerys .data для сохранения функции в «clickFunc», а затем использую ее в качестве обратного вызова для .click.Вы также можете просто использовать переменную.

$(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/

...