2011-07-07 16 views
2

は、私が最初にクリックした後のアンカーをアンバインドしたいのですが、ユーザーが特定のボタンをクリックしたときに、私はこのコードを書いたアンバインド後にクリックイベントをアンカーに再バインドする方法はありますか?

このアンカーにクリックイベントを再バインドしたい

$(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-handler-to-bind-them-again-later – Kokos

+0

バインドの代わりにjQueryのクリックを使用することができます。 http://api.jquery.com/click/ – mrtsherman

答えて

0

バインドするコールバックを渡す必要があります。アンバインドされた後は何も覚えていません。つまり、#activate.clickでバインドを指定し直した場合は、そこに関数を指定する必要があります。おそらく、これを実行する最善の方法は、bindコールのどこでそれを使用するかを指定することです。 以下の例では、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 
    });  
}); 
関連する問題