Это не связано с всплытием событий
При первом нажатии, его внутренний html будет 'click me'
Затем вы меняете внутренний html на <input type='text' name='right-name' value="click me"'>
Во второй раз, когда пользователь нажимает, он возьмет этот новый внутренний html и сделает то же самое, став:
<input type='text' name='right-name' value=""<input type='text' name='right-name' value="click me"'>"'>
Событие click привязывается к самому элементу. Таким образом, даже удаляя класс, который вы использовали в селекторе, событие остается.
Если бы вы делегировали селектор, он бы работал, так как событие не привязано к элементу li;)
$('.column-header').delegate('li.nottextbox', 'click',function(){
$(this).removeClass('nottextbox');
var text = this.innerHTML;
this.innerHTML = "<input type='text' name='right-name' value='" + text + "'>";
});
См. Скрипку: http://jsfiddle.net/46Pqf/9/