获取Jquery变量以在每次单击函数执行时重置

时间:2014-01-24 19:49:01

标签: jquery wordpress

我有一个问题,基本上是对此问题的跟进:WordPress 3.5 Media Uploader Multiple File Select

我正在使用this code在插件管理脚本中使用Wordpress的媒体上传器,该脚本需要三个单独的文本框才能进行图片上传。我已按如下方式编辑代码,以便将图像URL返回到相应文本框的值中。

jQuery(document).ready(function() {

    var tgm_media_frame;
    var field;
    var buttonID;
    var button;

    jQuery('.upload-images').click(function() {

        if ( tgm_media_frame ) {
            tgm_media_frame.open();
            return;
        }

        buttonID = jQuery(this).attr('id');
        button = jQuery("#"+buttonID);
        field = button.prev('input');

        tgm_media_frame = wp.media.frames.tgm_media_frame = wp.media({
            multiple: true,
            library: {
                type: 'image'
            },
        });

        tgm_media_frame.on('select', function(){
            var selection = tgm_media_frame.state().get('selection');
            selection.map( function( attachment ) {
                attachment = attachment.toJSON();
                console.log(field.attr('id'));
                field.val(attachment.url);
            });
        });

        tgm_media_frame.open();

    });

});

当我单击第一个按钮并上传图像时,它会按预期工作。但是,当我单击同一类的其他按钮上传下一个图像时,上传器会工作,但是url会放在第一个按钮的输入字段中。一旦第一次设置了字段变量,它就不会改变。如何在每次单击后重置它以使URL进入相应的输入文本字段?

2 个答案:

答案 0 :(得分:1)

如果没有JSFiddle,不容易理解发生了什么。也许删除这部分?

if ( tgm_media_frame ) {
    tgm_media_frame.open();
    return;
}

答案 1 :(得分:1)

将按钮字段id =“field_buttonId”分别对应更容易,然后您可以轻松获取字段选择器而不是prev。

buttonID = jQuery(this).attr('id');  button = jQuery(“#”+ buttonID);

- > field = jQuery(“#field _”+ buttonID);