【问题标题】:Getting Jquery variable to reset each time click function executes每次单击功能执行时让 Jquery 变量重置
【发布时间】:2014-01-24 19:49:01
【问题描述】:

我有一个基本上是后续问题的问题: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 进入适当的输入文本字段?

【问题讨论】:

    标签: jquery wordpress


    【解决方案1】:

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

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

    【讨论】:

    • 好吧,你有“var tgm_media_frame;”在函数之外,所以它在函数结束时仍然存在。我建议您删除的代码是检查变量是否为空,如果不为空,它将 .open() 并退出您的函数;
    【解决方案2】:

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

    buttonID = jQuery(this).attr('id'); 按钮 = jQuery("#"+buttonID);

    --> field = jQuery("#field_"+buttonID);

    【讨论】:

    • 或者更好的是,将所有这三行替换为 field = jQuery(this).prev('input');
    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多