Беда в том, что dst и vst меняются в вашем цикле.Поэтому, когда ваш обработчик кликов запускается, он использует окончательные версии dst и vst, а не значения, которые они имели при создании обработчика кликов.
Вам нужна копия dst и vst, которую вы можете сделать, создавновый контекст.Пример
function make_handler(vst, dst) {
$(vst).click(function(){
var vid_id = $(dst).html();
console.log(vid_id);
$.post("/nodes/iframize/", {video_id: vid_id});
});
}
$(function() {
for ( i=0; i < parseInt(ids); i++){
var vst = '#'+String(img_arr[i]);
var dst = '#'+String(div_arr[i]);
make_handler(vst, dst);
}
});
Вы можете сделать это встроенным, но вам нужна функция, которая принимает vst и dst в качестве аргументов, потому что они копируются, и контекст сохраняется для того, когда происходит обратный вызов.
Редактировать: под «делай это встроенным» я подразумеваю замену вызова make_handler () чем-то вроде:
function(vst,dst) { ... } (vst, dst);