开发者

jQuery data() function in GreaseMonkey

I'm trying to use jQuery's data() function to store and retrieve data on an element. I want to retrieve the data stored in a textarea whenever the user enters the space bar1. However, everytime I do this I get undefined back from data()开发者_如何学JAVA.

Now, if I define exactly the same Javascript in the HTML, it works as expected. Is there some "gotcha" to data() that keeps it from working in GreaseMonkey?

Here is the GreaseMonkey script:

(function(){
  //boilerplate greasemonkey to wait until jQuery is defined...
  function GM_wait()
  {
    if(typeof unsafeWindow.jQuery == 'undefined') {
      window.setTimeout(GM_wait,100);
    } else {
      var $ = unsafeWindow.jQuery;
      $(function() { letsJQuery($); });
    }
  }
  GM_wait();

  function letsJQuery($)
  {
    //store the data initially
    $('textarea[name=comment]').data('tst', 'abc');

    //retrieve the data on spacebar
    $('textarea[name=comment]').live('keypress', function(e) {
      if(e.which == 0x20) { //spacebar
        alert("the stored data is: " + $(this).data('tst'));
        return false;
      }
    });
  }
})();

And here is my very simple test HTML file:

<html>
<head>
<script type="text/javascript"
  src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<textarea name="comment"></textarea>
</body>
</html>

1 This is a very simplified version of my problem, of course.


The following should work:

  function letsJQuery($)
  {
    //store the data initially
    var ta = $('textarea[name=longtext]').data('tst', 'abc');

    //retrieve the data on spacebar
    ta.live('keypress', function(e) {
      if(e.which == 0x20) { //spacebar
        alert("the stored data is: " + ta.data('tst'));
        return false;
      }
    });
  }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜