ОК, я думаю, что вижу проблему.
$('.meta_upload_button').each
запускает тело функции один раз для каждой кнопки.Каждый раз, когда она запускается, переменная
window.send_to_editor_clone
устанавливается на некоторую функцию, которая должна заполнять текстовое поле.Но есть только одно окно , поэтому window.send_to_editor просто будет равно последнему назначенному значению.В данном случае это функция, в которой кнопка имеет последнее значение, которое она будет иметь - т. Е. Это последняя кнопка, поведение, которое вы описали.
Как это исправить?Я не совсем уверен.Вы застряли в возможности получить доступ к этой вещи только через window.send_to_editor (html) ?В идеале вы должны определить эту функцию только один раз, но определенную кнопку передать в нее в качестве параметра.
Поиск в поисках send_to_editor не говорит мне много о том, как с этим справиться.Вы могли бы сделать это следующим образом:
var ww = $('#post_id_reference').text();
var which_button;
$('.meta_upload_button').each(function() {
var button = $(this);
$(this).click(function() {
which_button = button;
tb_show('', 'media-upload.php?post_id=' + ww + '&type=image&TB_iframe=true');
return false;
});
}); //end each
//my version of the send_to_editor
window.send_to_editor_clone = function(html){
//grabs the URL of the selected image
imgurl = $('img',html).attr('src');
forminput = which_button.prev('input');
//changes the value on the LAST input
forminput.val(imgurl);
tb_remove();
}
window.send_to_editor=window.send_to_editor_clone;
Это будет работать только в том случае, если window.send_to_editor будет вызван после обработчика щелчка.В противном случае, становится намного неприятнее иметь дело.Я думаю, это было бы возможно с помощью setTimeOut, но в этот момент он становится параллелизмом, о котором сложнее думать.