2011-01-30 64 views
1

不工作我已經爲ZeroClipBoard下面的JS代碼:截流ZeroClipboard

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元素的值。那麼我應該怎麼去呢?我得到控制的價值在這一點上

變種文字= $(項目)的.html(); //

但是當懸停函數被調用它丟失。我在想它會通過Closure保存下來。我錯過了什麼嗎?我不能在這行獲得的文本值:

clip.setText(text); 

我無法從我內clip.addEventListener(「鼠標懸停」,功能(客戶端){剪輯時,外部訪問的任何變量。的setText(文本);})

回答

2

的值不會在函數調用保存,你需要使用一個$.proxy來代替:

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