$.get
является асинхронным, во втором журнале отображается то же число, поскольку оно регистрируется до завершения ajax, попробуйте
console.log($(":input, select").length);
$.get('templates/' + tmpl + '.html', function (data) {
tbl.html(data);
console.log($(":input, select").length);//probably it will give a different number
});
или в вашем текущем наборе сценариев async:false
(что крайне не рекомендуется)
$(function () {
$.ajaxSetup({
async:false
});
var tbl = $('table[id^="stg_"]');
var tmpl = tbl.attr('id').replace('stg_', '');
// how many elements before
console.log($(":input, select").length);
$.get('templates/' + tmpl + '.html', function (data) {
tbl.html(data);
});
console.log($(":input, select").length);
});