yes, that will work, if you modify it slightly. I am a big fan of the queue method, it just feels like overkill in some situations. It fits well here though:

var i = 0;

$(function(){

$('#button').queue(function(next){

$(this).bind('click', counter);

next();

})

.delay(1000)

.queue(function(next){

$(this).unbind('click', counter);

next();

});

});

function counter(){

if(i == 0) {

$('<p id="counter"></p>').appendTo('body')

}

$('#counter').text('click counter: ' + i)

i++

}

the function you pass into the queue method gets passed a parameter. If you do not run the function passed in that param or fire the $(this).dequeue() method (required for older versions of jquery that don't pass the parameter), the queue will not continue.