关闭不在ZeroClipboard中工作

时间:2011-01-30 17:54:18

标签: javascript jquery

我有ZeroClipBoard的以下JS代码:

onComplete: function(item) {

            var text= $(item).html();//Not working when I hover the clip
           //var text= 'Hello';// This is working when I hover the clip

            var clip = new ZeroClipboard.Client();
            clip.setHandCursor(true);

            clip.addEventListener('complete', function(client, text) {
                debugstr("Copied text to clipboard: " + text );
            });

            clip.addEventListener('mouseOver', function(client) {
                clip.setText(text);
            })

            // glue specifying our button AND its container
            clip.glue('id_clip_button', 'id_clip_container');

        },

上面的oncomplete是oneofmy函数,在某个动作上被调用。我从它得到的项目是html元素。 现在在上面的代码中:

        var text= $(item).html();//Not working when I hover the clip
       //var text= 'Hello';// This is working when I hover the clip

如果我评论第一行并取消注释第二行,则剪辑正在工作,文本将被复制到剪贴板。但是我必须在复制文本时使用该html元素的值。那我该怎么做呢?我现在得到了控制的价值

var text = $(item).html(); //

但是当调用悬停功能时它会丢失。我以为它将通过Closure保留。我错过了什么吗?我无法在此行获取文本的值:

clip.setText(text);

当我进入clip.addEventListener('mouseOver',function(client){clip.setText(text);})

时,我无法从外部访问任何变量

1 个答案:

答案 0 :(得分:2)

该值不会在函数调用中保留,您需要使用$.proxy代替:

        clip.addEventListener('mouseOver', $.proxy(function(client) {
            // "this" is now set to text
            clip.setText(this);
        }, text));