Оберните его так, чтобы код не запускался до тех пор, пока документ не загрузится.
Попробуйте: http://jsfiddle.net/ApDKU/
$(function() {
var fn=function(){
alert('success!');
};
$('#but2').click(fn);
});
Выполнение:
$(function() {...});
... совпадает с
$(document).ready(function() {...});
... которые вызывают запуск кода только после завершения загрузки тега <body>
.
То, как вы это сделали, код, который прикрепил обработчик click
к #but2
, выполнялся до того, как #but2
загрузилось на страницу.