wordpress元框输入字段的jquery

wordpress元框输入字段的jquery,jquery,wordpress-theming,Jquery,Wordpress Theming,我的wordpress主题中有一堆元框。单击按钮w/class=“meta_upload_button”我想启动默认的媒体上传程序。多亏了一些在线教程,我的这部分基本上都能正常工作。我正在尝试调整代码,使其适用于多个输入/按钮对 <input type="text" /> <button type="button" class="meta_upload_button">Upload</button> 好的,我想我知道问题出在哪里了 $('.meta_uplo

我的wordpress主题中有一堆元框。单击按钮w/class=“meta_upload_button”我想启动默认的媒体上传程序。多亏了一些在线教程,我的这部分基本上都能正常工作。我正在尝试调整代码,使其适用于多个输入/按钮对

<input type="text" />
<button type="button" class="meta_upload_button">Upload</button>

好的,我想我知道问题出在哪里了

$('.meta_upload_button').each
为每个按钮运行函数体一次。每次它运行时,变量

window.send_to_editor_clone
设置为某个函数,该函数应填充文本字段。但是,只有一个 窗口,因此窗口。发送到编辑器将等于上次分配的值。在本例中,它是一个函数,其中按钮具有它将具有的最后一个值-即,它是最后一个按钮,这就是您描述的行为

你怎么修理它?我不太确定。您是否只能通过窗口访问此内容。发送到\u编辑器(html)?理想情况下,您只需定义该函数一次,但要将特定的按钮作为参数传递给它

谷歌搜索发送给编辑器并不能告诉我如何处理这个问题。您可以按如下方式执行此操作:

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时,此操作才有效。否则,它将变得更加棘手。我认为,设置超时是可能的,但在这一点上,它变成了一个并发问题,这更难考虑。

@食指-非常感谢!我使用每一种方法的问题现在都有道理了,我永远也看不到这一点。我也会发誓我曾经尝试过类似于按钮的东西,但我今天醒来,看到了你的答案——然后砰的一声,它成功了

var ww = $('input[name=post_ID]').val();

$('.meta_upload_button').each(function() {

    var button = $(this);

    $(this).click(function() {
        which_button = button;
        window.send_to_editor=window.send_to_editor_clone;
        tb_show('', 'media-upload.php?post_id=' + ww + '&type=image&TB_iframe=true');
        return false;
    });


    window.send_to_editor_clone = function(html){
        imgurl = $('img',html).attr('src');
        forminput = which_button.prev('input');
        forminput.val(imgurl);

        tb_remove();
    }

}); //end each

send_to_editor是wordpress中几乎没有任何文档的另一个功能。但在上面,我需要将克隆的send_to_编辑器保留在click函数中,以便它仅在元数据库中的单击按钮上调用,而不会干扰常规文章中的媒体按钮

为了便于思考这个问题,请尝试在“button.prev('input').val('test');”之后立即添加“button.prev('input').css…”。这将有助于根据发生的情况稍微隔离问题。隔离是我将.css放在那里的原因。我按照你说的做了,“测试”被正确地添加到正确的输入中。但是forminput.val(imgurl)的结果;akways进入最后一个!这是横切iframe的结果吗?谢谢!新鲜的眼睛有时能创造奇迹。我把我的最终代码贴在下面作为回复。
var ww = $('input[name=post_ID]').val();

$('.meta_upload_button').each(function() {

    var button = $(this);

    $(this).click(function() {
        which_button = button;
        window.send_to_editor=window.send_to_editor_clone;
        tb_show('', 'media-upload.php?post_id=' + ww + '&type=image&TB_iframe=true');
        return false;
    });


    window.send_to_editor_clone = function(html){
        imgurl = $('img',html).attr('src');
        forminput = which_button.prev('input');
        forminput.val(imgurl);

        tb_remove();
    }

}); //end each