в обработчике события 'this' обычно относится к элементу, инициирующему событие, в данном случае это будет ваша кнопка
поэтому решение вашей проблемы довольно простое, вместо ссылки на переменную btn, которая находится в более широкой области видимости и мутирует задолго до запуска обработчика события, мы просто ссылаемся на элемент, вызвавший событие, и получаем его идентификатор
$(btn).click(function () {
alert('You clicked : #' + this.id);
return false;
});
Примечание: если ваш массив содержит другие селекторы, которые являются только идентификатором, это, очевидно, не будет отражать это и просто продолжит показывать идентификатор
К счастью, обработчик щелчка (и все другие обработчики событий afaik) принимает дополнительный параметр для eventData, полезный примерно так:
$(btn).click(btn, function (event) {
alert('You clicked : #' + event.data);
return false;
});
Используйте массив, если вы передаете несколько вещей:
$(btn).click(['foo', 'bar'], function (event) {
alert('this should be "foo": ' + event.data[0]);
alert('this should be "bar": ' + event.data[1]);
return false;
});