Using jQuery .live with toggle event

You cannot use live and toggle together. What you can do, is simply make your own “toggle” of sorts:

$('#showHideComments').live('click', function() {
    if($("#addComment").is(':visible')){
      $(".commentsSwitch").animate({"marginLeft": "-=53px"}, 500);
      $("#comments, #addComment").fadeOut(300);
    } else {
      $(".commentsSwitch").animate({"marginLeft": "+=53px"}, 500);
      $("#comments, #addComment").fadeIn(300);
    };
});

live is binding to click, however, when toggle is called, it is also bound (normally) on click. You should decide if ‘live’ is really what you need. For instance, if #showHideComments object is replaced via AJAX during the use of the page, then you need live and my solution. However, if it isn’t swapped out and remains the same, just use the inside of your original live function (just the toggle code) and you will be golden.

Leave a Comment