# callbacks.lock()

## callbacks.lock ( ) Returns: Callbacks version added: 1.7

Description: Lock a callback list in its current state.

This method returns the Callbacks object onto which it is attached (`this`).

If the Callbacks object is created with the `"memory"` flag as its argument, additional functions may be added and fired after the callback list is locked.

## Examples:

#### Example: Use callbacks.lock() to lock a callback list to avoid further changes being made to the list state:

    // A sample logging function to be added to a callbacks list
    var foo = function( value ) {
      console.log( "foo:" + value );
    };

    var callbacks = $.Callbacks();

    // Add the logging function to the callback list
    callbacks.add( foo );

    // Fire the items on the list, passing an argument
    callbacks.fire( "hello" );
    // Outputs "foo: hello"

    // Lock the callbacks list
    callbacks.lock();

    // Try firing the items again
    callbacks.fire( "world" );

    // As the list was locked, no items were called,
    // so "world" isn't logged

#### Example: Use callbacks.lock() to lock a callback list with "memory," and then resume using the list:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>css demo</title>

      <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    </head>
    <body>

    <div id="log"></div>

    <script>

    // Simple function for logging results
    var log = function( value ) {
      $( "#log" ).append( "<p>" + value + "</p>" );
    };

    // Two sample functions to be added to a callbacks list
    var foo = function( value ) {
      log( "foo: " + value );
    };
    var bar = function( value ) {
      log( "bar: " + value );
    };

    // Create the callbacks object with the "memory" flag
    var callbacks = $.Callbacks( "memory" );

    // Add the foo logging function to the callback list
    callbacks.add( foo );

    // Fire the items on the list, passing an argument
    callbacks.fire( "hello" );
    // Outputs "foo: hello"

    // Lock the callbacks list
    callbacks.lock();

    // Try firing the items again
    callbacks.fire( "world" );
    // As the list was locked, no items were called,
    // so "foo: world" isn't logged

    // Add the foo function to the callback list again
    callbacks.add( foo );

    // Try firing the items again
    callbacks.fire( "silentArgument" );
    // Outputs "foo: hello" because the argument value was stored in memory

    // Add the bar function to the callback list
    callbacks.add( bar );

    callbacks.fire( "youHadMeAtHello" );
    // Outputs "bar: hello" because the list is still locked,
    // and the argument value is still stored in memory

    </script>

    </body>
    </html>

#### Demo: